C++ LNK2005-已定义对象
我有两个.cpp文件和一个.h文件:C++ LNK2005-已定义对象,c++,C++,我有两个.cpp文件和一个.h文件: #include <iostream> #include <string> #include <vector> namespace characters { using namespace std; class character{ public: void info_character(); //... }; } 它会导致错误: 错误1错误LNK2005:公用:
#include <iostream>
#include <string>
#include <vector>
namespace characters
{
using namespace std;
class character{
public:
void info_character();
//...
};
}
它会导致错误:
错误1错误LNK2005:公用:无效\uuu此调用
characters::character::info\u charactervoid
?信息_character@character@字符@@QAEXZ已在中定义
机械师
如何修复?我想将头文件添加到所有.cpp文件中?您应该确保包含的文件不包含character::info_character的实现,除非您使用的是内联实现,而您的摘录没有 移动此代码
void character::info_character()
{
...
}
到其中一个.cpp文件。上面引用的标题是否完整,至少缺少包含防护装置的标题?错误消息看起来好像在标头中定义了characters::character::info_character。。。或者您无意中包含了.cpp文件。另一种可能是Mechanics.obj的依赖项没有正确跟踪,这是早期版本的遗留问题。请尝试清理项目并重新生成。是否确实没有从任何内容中包含两次标题?它似乎没有包含守卫,而且确实应该包含。您不可能从发布的代码中获得此错误。这是一个链接器错误,由于您的代码无法编译,因此不可能达到链接阶段。我不知道为什么由于示例代码不完整而将其标记为关闭。很明显,OP没有发现问题,但症状足以引发问题。
void character::info_character()
{
...
}