我认为这里只有以下标题是相关的:
Game.h
#include "Player.h"
class Game
{
private:
Player White;
Player Black;
Board current_board;
};
Player.h:
#include "Game.h"
#include "Piece.h"
class Player
{
private:
Chessend end;
std::string name;
std::vector <Piece> pieces;
Board* board_ptr;
Game* game_ptr;
};
Piece.h:
#include "Player.h"
class Player; //forward declaration
class Piece
{
private:
Chesspiece type;
bool moved, taken;
Player *player;
};
出现以下错误
In file included from Player.h:11:0,
from Game.h:1,
from main.cpp:1:
Game.h:20:10: error: field 'White' has incomplete type 'Player'
Player White;
^
In file included from Player.h:9:0,
from Game.h:1,
from main.cpp:1:
Piece.h:7:7: note: forward declaration of 'class Player'
class Player;
我知道Piece.h中有一个前向声明,但我不确定为什么这是个问题。
class Game;
。然后在class Player { };
之后包含game.h。 - Pierre Emmanuel LallemantPlayer White
,你需要先完整地定义 Player 类。 - Pierre Emmanuel Lallemant