-1

完全なエラーは

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:に置き換えexternstatic、すべてがコンパイルされるようになりました。なぜエラーが発生したのかわかりません。誰かが私にこれを説明できますか?

4

1 に答える 1

1

130行目にMovesオブジェクトを作成する場合は、次の名前を付けてみてください。

Moves dummyMoves(*Pos);

それ以外の場合は、Moves型のPosという名前の変数を宣言している可能性があります*

于 2012-04-12T02:40:28.587 に答える