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