微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使另一个类的指针指向“this”

如何解决使另一个类的指针指向“this”

我正在开发一个非常基本的 C++ 2D 游戏引擎。我创建了一个名为 GameObject 的类,每个游戏对象都有一个组件列表。每个组件还有一个 GameObject 指针,指向它所属的游戏对象。基本上是这样的:

class Component{   
public:
        virtual void start() {};
        virtual void update(float dt) {};
        GameObject* obj;
};

class GameObject
{
private:
    std::vector<Component*> components;
public:
    void addComponent(Component* c)
    {
        c->obj = this;
        components.push_back(c);
    }
};

但是上面的代码给了我一堆错误

- 前面的意外标记; -语法错误:缺少“;” 之前 *

-'obj' 不是 'Component' 的成员

-缺少类型说明符-假定为 int。注意 c++ 不支持 认整数

如果我删除 GameObject 指针,我所有的错误都会消失。

这到底是什么问题?

解决方法

您需要转发声明 GameObject

#include <vector>

class GameObject;

class Component {
 public:
  virtual void start() {}
  virtual void update(float dt) {}
  GameObject* obj;
};

class GameObject {
 private:
  std::vector<Component*> components;

 public:
  void addComponent(Component* c) {
    c->obj = this;
    components.push_back(c);
  }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。