我正在使用OpenGL和DirectX,并且已经开始开发面向对象游戏类的基础知识。当前类的结构如下:
宾语
--- | ---演员
--------- | ---典当
--------- | ---控制器
因此,我有继承Pawn
的Controller
和Actor
类,而Object
继承了Controller
。
问题是我需要在典当类中有一个Pawn
的引用,在控制器类中有一个Pawn
的实例。
因此,我在Controller
中预先声明了Actor.h
和Pawn.h
:
// Actor.h
// (...) Actor Declaration (...)
class Pawn;
class Controller;
然后在中:
// 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
[如果需要更多信息,我会提供]
最佳答案
前向声明对编译器说,将进一步提供给定类型。编译器不了解有关该类型的字段或成员的任何信息。因此,您需要在.cpp文件中包含相应的.h文件(访问“ controller”类的成员的位置)。
关于c++ - C++转发声明(指针)-Access成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11246594/