完整的錯誤是MSVC錯誤C2371「重新定義;不同的基本類型」,但我看不出我重新定義了什麼
1>d:\test\src\search.cpp(130): error C2371: 'Pos' : redefinition; different basic types
1> d:\test\src\search.cpp(100) : see declaration of 'Pos'
- search.cpp,行130:
Moves(*Pos);
(如果我省略此線,代碼編譯沒有錯誤) - search.cpp,線100:
Position *Pos = Mov.ChildPosition;
的Moves
構造函數被聲明:Moves(Position &Pos);
Mov
是一個函數參數:void searchMove(Move &Mov)
爲什麼MSVC說我重新定義Pos
?
更新1:根據要求:
- main.cpp中,線32:
Position Pos(TESTF, TESTW, TESTB);
- main.cpp中,線36:
searchRoot(Pos, 5);
- moves.cpp,線467:
Position *NextPosition = new Position(ParentPosition->flags^0x8000, white, black, theirs, ours);
- moves.cpp,line 474:
Move *Mov = new Move(*NextPosition, piece, square1, square2, capture);
- search.cpp,line 26:
void searchRoot(Position &Pos, U8 depth)
- search.cpp 32行:
Moves Mov(Pos);
Position
對象傳遞給Move
和Moves
對象的構造,分別存儲在ChildPosition
和ParentPosition
。
更新2:我用下面的David Norman的建議替換了130行,現在我收到5個「LNK2001:無法解析的外部符號」錯誤。這很奇怪,因爲它們都引用在我的search.h文件中使用extern
聲明的變量。
更新3:我用static
取代了extern
,現在所有東西都在編譯。我不明白爲什麼我得到了我的錯誤。任何人都可以向我解釋這個嗎?
你能發佈更多的代碼?這個代碼很難確定問題是什麼?問題可能比您發佈的更多。 – josephthomas 2012-04-12 02:23:31
不是問題,但我應該發佈什麼代碼? – 2012-04-12 02:24:30
你申報'Pos'的地方。 – 2012-04-12 02:25:40