完全なエラーは
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、行474:
Move *Mov = new Move(*NextPosition, piece, square1, square2, capture); - search.cpp、26行目:
void searchRoot(Position &Pos, U8 depth) - search.cpp、32行目:
Moves Mov(Pos);
PositionMoveオブジェクトはとオブジェクトのコンストラクターに渡され、それぞれとMovesに格納されます。ChildPositionParentPosition
更新2:130行目を以下のDavid Normanの提案に置き換えましたが、5つの「LNK2001:未解決の外部シンボル」エラーが発生します。externこれらはすべて、私のsearch.hファイルで使用して宣言された変数を参照しているため、これは奇妙です。
アップデート3:に置き換えexternてstatic、すべてがコンパイルされるようになりました。なぜエラーが発生したのかわかりません。誰かが私にこれを説明できますか?