Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 存储指向类实例的指针(这不起作用)_C++_Class_Pointers - Fatal编程技术网

C++ 存储指向类实例的指针(这不起作用)

C++ 存储指向类实例的指针(这不起作用),c++,class,pointers,C++,Class,Pointers,我正在创建一个非常简单的基于组件的游戏引擎。我有一个实体类,它存储要迭代的组件列表 实体类还存储诸如名称、位置、比例等信息。我需要的是每个组件存储对拥有它的实体实例的引用。我最初尝试使用“this”关键字,但它不起作用,因为你不能在作业中使用它 void Entity::addComponent(Component *theComponent){ components.push_back(theComponent); theComponent->ownerEntity =

我正在创建一个非常简单的基于组件的游戏引擎。我有一个实体类,它存储要迭代的组件列表

实体类还存储诸如名称、位置、比例等信息。我需要的是每个组件存储对拥有它的实体实例的引用。我最初尝试使用“this”关键字,但它不起作用,因为你不能在作业中使用它

void Entity::addComponent(Component *theComponent){
    components.push_back(theComponent);
    theComponent->ownerEntity = this;
}
组件如何存储指向其所有者的指针

谢谢你的帮助

编辑:component类中几乎没有要继承的内容,但下面是它的声明:

class Entity;

class Component
{
    public:
        Component();
        virtual void Update();
        Entity *ownerEntity;
    protected:
    private:

};
制作组件时,如果我尝试访问所有者实体,如下所示:

rotation = ownerEntity->GetRotation;
我得到这个错误:

error: argument of type 'float (Entity::)()' does not match 'float'
应该是:

rotation = ownerEntity->GetRotation();

调用函数。

请显示组件类如果您是模型所有者,请不要使用原始指针。使用智能指针。“我最初尝试使用“this”关键字,但它不起作用,因为你不能在作业中使用它。”我不知道你是从哪里得到这个想法的。使用
作为作业的右侧没有错。你需要更好地描述你所面临的问题,因为当前的描述是一个非问题。你需要比“它不工作”更具体发生了什么,它会编译吗?如果不是,您正在使用什么编译器,它说什么?如果它编译了,它是否会像您期望的那样运行?它崩溃了吗?@DavidC您向我们展示的代码可以工作(它仍然不是很好的代码,请参见上文关于指针和所有权的内容,并且它还有太多的公共成员…)。那么:你说“不起作用”是什么意思?我们都会犯错。下次你肯定会很快发现这个!
rotation = ownerEntity->GetRotation();