我有一个工作项目。重新安排一些代码后,我尝试重新编译我的项目,然后奇怪的事情开始发生。看一下编译器输出的摘录。我正在使用 MinGW G++ 从 Windows 上的 Eclipse 进行编译。
**** 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,第 18 行:
Piece* GetPieceAt(int row, int col) const;
通常当发生这种情况时,我只需要添加一些我忘记做的内容即可。但事实上我已经包括了piece.h在顶端board.h.
我的第二个想法是编译器一定在某个位置生成了错误Piece
类会导致编译器忽略该类的存在,进而会导致更多错误。在这种情况下,我会查看第一个编译器错误,我预计该错误与以下错误有关片断.cpp or piece.h。但第一个错误不是关于Piece
根本没有,所以我查看了 Eclipse 是否标记了任何错误片断.cpp or piece.h。不,看不到红线。我只看到了几个这些无法解释的黄色标记 http://img139.imageshack.us/img139/8529/yellowmarkers.jpg.
我检查的最后一件事是每个头文件都包含包含防护,他们确实做到了。
我该如何查明此错误的真相?我会发布代码片段,但随后我可能最终会粘贴整个代码(我不能这样做),因为可能需要额外的上下文。
Edit: 这里是board.h直到第 18 行。(我省略了一个大注释,这解释了为什么这段代码比您预期的要小。)
#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;