0

我得到了这个错误,我根本没有得到。我将其解释为我有不止一次定义不同的东西,但是当我查看我的代码时,我只是看不到它。我上传了错误消息指向的代码:

 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

4

2 回答 2

0

正如链接器告诉您的那样,您的函数和 定义getTeamnumber()operator <两个不同的翻译单元中: in (我猜那是文件的名称)和 in 。scouting.cppteamdata.cpp

定义是相同还是不同都没有关系(函数模板是这个规则的一个例外,但这不是你的情况,因为你的函数不是模板),只要它们是多个.

单一定义规则(C++ 标准的第 3 条)规定程序的每个实体只能有一个定义。

于 2013-01-29T16:29:05.120 回答
0

超出链接器正确的标准答案......

我不确定您的项目是否已配置或您的代码是如何布局的……所以请谨慎对待。

将那些方法的定义从类头文件移到类定义文件中......

于 2013-01-29T16:30:54.523 回答