方法的前向声明

Vin*_*ent 4 c++ forward-declaration

我有一个关于前向声明的小问题。我在一个文件中有以下课程

机器人.h

class Robot
{
public:
   void moveForward()
private:
}
Run Code Online (Sandbox Code Playgroud)

在 Robot.cpp 文件中实现

我有一个 UserReceiver.h 类,它定义了用户与机器人等交互的接口......这个类用鼠标管理相机,我加载了 Robot 类的一个实例,以便可以与它进行交互

用户接收器.h

class Robot;
class UserReceiver
{
public:
     void LoadRobot(Robot* _robot) { robot = _robot; }

     bool onEvent()
     {
         etc...
         // Calling robot->moveForward() when clicking something
     }
 private:
 Robot* robot;
}
Run Code Online (Sandbox Code Playgroud)

如果需要,我可以提供完整的代码(我使用的 3D 引擎是 Irrlicht)。我的问题是如何转发声明与 Robot 类关联的方法?这个问题有很好的设计模式吗?

我得到的错误是(在程序调用robot->moveForward()的那一行):

error C2227: left of '->moveForward' must point to class/struct/union/generic type
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助

此致

Pet*_*ood 5

您在Robot没有完整声明的情况下使用。要么将onEvent实现移动到一个cpp文件中并在robot.h那里包含标题,要么只#include包含robot.hin userreceiver.h

我推荐前者。