我收到了这个错误,我根本没有得到。我把它解释为我有不止一次定义的东西,但当我查看我的代码时,我只是看不到它。我上传了错误消息指向的代码:
teamdata.obj:-1: error: LNK2005: "public: int __thiscall teamdata::getTeamnumber(void)" (?getTeamnumber@teamdata@@QAEHXZ) already defined in scouting.obj
teamdata.obj:-1: error: LNK2005: "public: bool __thiscall teamdata::operator<(class teamdata)" (??Mteamdata@@QAE_NV0@@Z) already defined in scouting.obj
release\Scouting.exe:-1: error: LNK1169: one or more multiply defined symbols found
链接: teamdata.h http://pastebin.com/5u0YzK84
teamdata.cpp http://pastebin.com/GP0zRzpw
答案 0 :(得分:0)
正如链接器告诉您的那样,您的函数getTeamnumber()
和operator <
在两个不同的翻译单元中定义:{{1 (我想那是&#39;是文件的名称)和scouting.cpp
。
定义是相同还是不同无关紧要(函数模板是此规则的一个例外,但不是你的情况,因为你的函数不是tmeplates),只要它们是多个的。
一个定义规则(C ++标准的第3条)规定程序的每个实体只有一个定义。
答案 1 :(得分:0)
超出链接器正确的标准答案......
我不确定您的项目是否已配置或您的代码是如何布局的......所以请大家多加一点。
将那些方法的定义从类头文件移到类定义文件...