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