我有两个类,这两个类都需要能够调用相同的entitymanager实例

class Engine
{
  EntityManager::Entitymanager EManager;
}


而且我需要向此特定Engine实例包含的向量中添加一个对象。我想做的就是能够将玩家产生的子弹添加到包含我所有实体的向量中。

class Player : Entity
{
  void SpawnBullet() {Engine::EManager.Add(BULLET);}
}


以上返回此错误:

错误:缺少有关“ Engine :: EManager”的对象

我该如何解决?任何帮助或正确方向的指点将不胜感激!

最佳答案

您正在尝试访问没有与其关联的类实例的EManager。

有两种解决方案。

您必须具有Engine的实例才能访问EManager:

class Engine {
    EntityManager::Entitymanager EManager;
};


然后,您可以通过以下方式访问EManager

m_engine.EManager.Add(BULLET)


您必须将EManager设置为Engine的静态成员(也就是说,它将仅绑定到类作用域,您将不需要实例):

class Engine {
public:
    static EntityManager::Entitymanager EManager;
};


然后,您可以像以前一样访问它(它必须是公共的,或者您的班级必须是朋友)。

但是我觉得您需要获取a good introductory C++ book并了解您要实现的目标。而当您使用它时,也可以同时获得有关软件工程的知识;)。

关于c++ - 从在另一个类中实例化的对象调用函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4677165/

10-11 23:15
查看更多