我使用正向引用引用了2个类,但是我仍然在每个类中遇到类实例声明错误。 注意:如果与它有任何关系,我正在使用DirectX和版本控制吗?
Game.h:
#ifndef GAME_H
#define GAME_H
class Player;
class Game {
public:
Player player; // Undefined class error here
//...
};
#endif
Player.h:
#ifndef PLAYER_H
#define PLAYER_H
class Game;
class Player {
public:
Game game; // Undefined class error here
//...
};
#endif
显然有更多的代码,但我认为只包含必要的代码会让你更容易阅读。
非常感谢任何帮助。
非常感谢
灰
答案 0 :(得分:0)
为了声明特定类型的成员,编译器必须在当时具有该类型的完整声明:
class Player;
class Game {
public:
Player player; // dunno what this means
你创建了一个不幸的循环依赖,你只能用指针或引用来解决:
// Game.h
#include "player.h"
class Game {
Player player; // ok
};
// Player.h
class Game;
class Player {
Game* game; // ok.
};