|
|
3鱼币
有3个文件, 定义了1个命名空间, 1个类
为什么Cross类的声明和定义都放在nameh.h文件就可以, 分开就不行了????
构建的时候出错了, 弄了好久都不知道是怎么回事...
- //main.cpp
- #include"namesh.h"
- #include<iostream>
- int main()
- {
- T::out();
- Cross cr;
- return 0;
- }
复制代码
- //nameh.h
- #include<iostream>
- namespace T
- {
- void out()
- {
- int a = 100;
- std::cout << a << std::endl;
- }
- }
- class Cross
- {
- public:
- Cross();
- int a;
- };
复制代码
- //name.cpp
- #include"namesh.h"
- #include<iostream>
- Cross::Cross()
- {
- a = 56;
- std::cout << a << std::endl;
- }
复制代码
补充内容 (2012-11-1 02:21):
main.obj || error LNK2005: "void __cdecl T::out(void)" (?out@T@@YAXXZ) 已经在 names.obj 中定义
bin\Debug\hello.exe || fatal error LNK1169: 找到一个或多个多重定义的符号 |
最佳答案
查看完整内容
因为你把T:out放在.h中定义了,然后names.cpp和main.cpp都include了这个文件,于是T:out的定义有了两份拷贝,然后就杯具了。。。
补充内容 (2012-11-1 19:07):
这表情出得太喜感了。。。。T : out....
|