Der vollständige Fehler istMSVC Fehler C2371 „Neudefinition, verschiedene Grundtypen“, es sei denn ich sehe nicht, wo ich etwas neu zu definieren bin
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, Linie 130:
Moves(*Pos);
(Wenn ich weglassen diese Zeile kompiliert der Code ohne Fehler) - search.cpp, Linie 100:.
Position *Pos = Mov.ChildPosition;
der Moves
Konstruktor wird erklärt: Moves(Position &Pos);
Mov
ist ein Funktionsargument: void searchMove(Move &Mov)
Warum MSVC sagen, ich bin Pos
neu zu definieren?
Update 1: Wie gewünscht:
- main.cpp, Zeile 32:
Position Pos(TESTF, TESTW, TESTB);
- main.cpp, Zeile 36:
searchRoot(Pos, 5);
- moves.cpp, Zeile 467:
Position *NextPosition = new Position(ParentPosition->flags^0x8000, white, black, theirs, ours);
- moves.cpp, Zeile 474:
Move *Mov = new Move(*NextPosition, piece, square1, square2, capture);
- search.cpp, Zeile 26:
void searchRoot(Position &Pos, U8 depth)
- search.cpp, Zeile 32:
Moves Mov(Pos);
Position
Objekte zu den Konstrukteuren von Move
und Moves
Gegenstände übergeben werden, die jeweils in ChildPosition
und ParentPosition
gespeichert.
Update 2: Ich ersetzt Linie 130 mit David Normans Vorschlag unten, und jetzt erhalte ich fünf "LNK2001: ungelöst externes Symbol" Fehler. Das ist seltsam, weil sie sich alle auf Variablen beziehen, die unter Verwendung von extern
in meiner search.h-Datei deklariert sind.
Update 3: Ich ersetzte extern
durch static
und alles jetzt kompiliert. Ich verstehe nicht, warum ich die Fehler bekam, die ich war. Kann mir das jemand erklären?
Könnten Sie schreiben mehr Code? Es ist schwer zu bestimmen, was das Problem von diesem Code ist? Es kann mehr sein als das, was Sie gepostet haben. – josephthomas
Kein Problem, aber welchen Code soll ich posten? –
Orte, an denen Sie 'Pos' deklarieren. –