Ich hatte ein funktionierendes Projekt. Nachdem ich etwas Code umgeordnet hatte, versuchte ich mein Projekt neu zu kompilieren und dann begannen seltsame Dinge zu passieren. Sehen Sie sich diesen Auszug aus der Ausgabe des Compilers an. Ich kompiliere von Eclipse unter Windows mit MinGW G ++.Fehler: '...' nennt keinen Typ
**** Build of configuration Debug for project Pract2 ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -omove.o ..\move.cpp
In file included from ..\/game.h:11:0,
from ..\/piece.h:10,
from ..\/move.h:10,
from ..\move.cpp:7:
..\/board.h:18:2: error: 'Piece' does not name a type
board.h, Zeile 18:
Piece* GetPieceAt(int row, int col) const;
Normalerweise, wenn das passiert, muss ich nur noch einige Einschlüsse hinzufügen ich habe vergessen zu. Aber ich habe in der Tat enthalten piece.h an der Spitze board.h.
Mein zweiter Gedanke war, dass der Compiler irgendwo in der Piece
Klasse einen Fehler generiert haben muss, der dazu führen würde, dass der Compiler die Existenz der Klasse ignoriert, was wiederum mehr Fehler verursachen würde. In diesem Fall würde ich den ersten Compiler-Fehler betrachten, von dem ich erwartete, dass er etwas über einen Fehler in piece.cpp oder piece.h sein würde. Aber der erste Fehler ist überhaupt nicht über Piece
, so dass ich sah, ob Eclipse irgendwelche Fehler in piece.cpp oder piece.h markiert hatte. Nein, keine rote Linie in Sicht. Ich habe nur ein paar von these unexplained yellow markers gesehen.
Eine letzte Sache, die ich überprüft habe, war, dass jede Header-Datei Inklusionswachen enthielt, was sie taten.
Wie komme ich auf den Grund dieses Fehlers? Ich würde Code-Snippets posten, aber dann würde ich wahrscheinlich den ganzen Code einfügen (was ich nicht kann), weil zusätzlicher Kontext notwendig sein könnte.
bearbeiten: hier ist board.h bis 18. zu Linie (Ich habe einen großen Kommentar ausgelassen, die, warum dieser Code-Block erklärt kleiner als man erwarten würde.)
#ifndef BOARD_H_
#define BOARD_H_
#include "piece.h"
class Board {
public:
// Prototypes for externally defined functions
Board();
~Board();
void PrintBoard();
Piece* GetPieceAt(int row, int col) const;
mindestens die Überschrift für board.h bis Zeile 18, wenn die Antwort unten von AndreyT hilft nicht –