C++ 转发声明(指针) - 访问成员

C++ Forward Declaration (Pointer) - Access member

本文关键字:访问 成员 指针 转发 声明 C++      更新时间:2023-10-16

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

对象
---|---演员
---------|---典当
---------|---控制器

所以我有继承Object ActorPawnController类。

问题是我需要在 pawn 类中引用 Controller,在控制器类中有一个 Pawn 的实例。
正因为如此,我在Actor.h中向前宣布PawnController

// 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中有一个控制器指针,

在我的控制器中有一个指向Pawn的指针,将它们保存在不同的文件(.h和.cpp)中,同时能够访问它的成员?

谢谢你的时间。:D

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

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