Tôi đã có một dự án làm việc. Sau khi sắp xếp lại một số mã, tôi đã cố gắng biên dịch lại dự án của mình và sau đó những điều kỳ lạ bắt đầu xảy ra. Hãy xem đoạn trích này từ đầu ra của trình biên dịch. Tôi đang biên soạn từ Eclipse trên Windows bằng cách sử dụng MinGW G ++.Lỗi: '...' không đặt tên là loại
**** 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, dòng 18:
Piece* GetPieceAt(int row, int col) const;
Thông thường khi điều đó xảy ra, tôi chỉ có thêm một số vùi Tôi đã quên làm. Nhưng tôi có trên thực tế bao gồm piece.h ở đầu bảng.h. Ý tưởng thứ hai của tôi là trình biên dịch phải đã tạo ra một lỗi ở đâu đó trong lớp Piece
mà có thể gây ra trình biên dịch bỏ qua sự tồn tại của lớp, do đó sẽ gây ra nhiều lỗi hơn. Quay trở lại đầu trang Trong trường hợp đó, tôi sẽ xem xét lỗi trình biên dịch đầu tiên, mà tôi mong đợi sẽ là một lỗi về số piece.cpp hoặc piece.h. Nhưng lỗi đầu tiên không phải là về Piece
ở tất cả, vì vậy tôi đã xem liệu Eclipse đã đánh dấu bất kỳ lỗi nào trong piece.cpp hoặc piece.h. Không, không phải là một đường đỏ trong tầm mắt. Tôi chỉ thấy một vài trong số these unexplained yellow markers.
Một điều cuối cùng mà tôi đã kiểm tra là mọi tệp tiêu đề đều chứa bộ bảo vệ bao gồm, mà chúng đã làm.
Làm cách nào để đến cuối lỗi này? Tôi muốn đăng đoạn mã, nhưng sau đó tôi có thể sẽ kết thúc dán toàn bộ mã (mà tôi không thể làm) vì ngữ cảnh bổ sung có thể là cần thiết.
Sửa: đây là board.h lên đến dòng 18. (Tôi đã rời ra một lời nhận xét lớn, giải thích tại sao khối mã này là nhỏ hơn bạn mong muốn.)
#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;
Ít nhất đăng tiêu đề cho bảng.h lên dòng 18 nếu câu trả lời dưới đây của AndreyT không giúp –