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 <2つの異なる変換単位で定義されています。in(ファイルの名前だと思います)とinです。scouting.cppteamdata.cpp

定義が同一であるか異なるかは関係ありません(関数テンプレートはこのルールの例外ですが、関数はtmeplatesではないため、そうではありません

単一定義規則(C ++標準の第3項)では、プログラムの各エンティティは1つの定義のみを持つ必要があると規定されています。

于 2013-01-29T16:29:05.120 に答える
0

リンカーが正しいという標準的な答えを超えて...

プロジェクトが構成されているか、コードがどのようにレイアウトされているかはわかりません。

それらの定義をクラスヘッダーファイルからクラス定義ファイルへのメソッドに移動します...

于 2013-01-29T16:30:54.523 に答える