C++ C++;前向声明(指针)-访问成员
我正在使用OpenGL和DirectX,我已经开始开发面向对象游戏类的基础知识。当前类别的结构如下所示: 对象C++ C++;前向声明(指针)-访问成员,c++,class,pointers,member,forward-declaration,C++,Class,Pointers,Member,Forward Declaration,我正在使用OpenGL和DirectX,我已经开始开发面向对象游戏类的基础知识。当前类别的结构如下所示: 对象 ---|---演员 ---------|---典当 ---------|---控制器 所以我有Pawn和Controller类,它们继承Actor,后者继承对象 问题是我需要在pawn类中有一个Controller的引用,在Controller类中有一个pawn的实例。 因此,我在Actor.h中向前声明了Pawn和Controller: // Actor.h // (...) Ac
---|---演员
---------|---典当
---------|---控制器 所以我有
Pawn
和Controller
类,它们继承Actor
,后者继承对象
问题是我需要在pawn类中有一个Controller
的引用,在Controller类中有一个pawn
的实例。
因此,我在Actor.h
中向前声明了Pawn
和Controller
:
// Actor.h
// (...) Actor Declaration (...)
class Pawn;
class Controller;
// Pawn.h
class Pawn : public Actor
{
private:
Controller* controller;
public:
void DoSomethingWithController(void);
}
然后在典当.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中,控制器的指针位于Pawn中,并将它们保存在不同的文件(.h和.cpp)中,同时能够访问其成员
谢谢你抽出时间D
[如果需要更多信息,我会提供它]转发声明对编译器说,将进一步提供给定类型。编译器对该类型的字段或成员一无所知。因此,您需要在.cpp文件(您访问“控制器”类成员的位置)中包含相应的.h文件。转发声明对编译器说,将进一步提供给定类型。编译器对该类型的字段或成员一无所知。因此,您需要在.cpp文件(您访问“controller”类成员的位置)中包含相应的.h文件。只需#在Pawn.cpp中包含“controller.h”
。这不是问题。Pawn.cpp不包括在Pawn.h中。希望如此。我明白你的意思,我怎么不记得我可以在.cpp extreme face palmJust中包含.h文件?在Pawn.cpp中包含“Controler.h”
。这不是问题。Pawn.cpp不包括在Pawn.h中。我希望。我明白你的意思,我怎么不记得我可以在.cpp extreme face palm中包含.h文件