0

我正在使用 OpenGL 和 DirectX,并且我已经开始开发面向对象游戏类的基础知识。当前类的结构如下:

对象
---|---Actor
---------|---Pawn
---------|---Controller

所以我有继承哪个继承的PawnController类。ActorObject

问题是我需要在 pawn 类中有一个引用,在控制器类中有Controller一个实例。 因此,我提前声明并在:Pawn
PawnControllerActor.h

// Actor.h

// (...) Actor Declaration (...)

class Pawn;
class Controller;

然后在Pawn.h

// Pawn.h

class Pawn : public Actor
{
private:
    Controller* controller;
public:
    void DoSomethingWithController(void);
}

这一切都很好,没有错误。问题是当我想访问该类中的成员时:

void Pawn::DoSomethingWithController(void)
{
    // this->controller-> can't access members like this (members not found)
}

那么,我应该怎么做才能在 Pawn 中有一个 Controller 的指针,在我的 Controller 中有一个指向 Pawn 的指针,将它们保存在不同的文件(.h 和 .cpp)中,同时能够访问它的成员?

感谢您的时间。:D

[如果需要更多信息,我会提供]

4

1 回答 1

5

前向声明告诉编译器将进一步提供给定的类型。编译器不知道该类型的字段或成员。因此,您需要在 .cpp 文件(访问“控制器”类成员的地方)中包含相应的 .h 文件。

于 2012-06-28T14:24:47.600 回答