我有一个几乎没有不同对象类的游戏,这些对象类都是从基类名称Gameobject派生的,如下所示:
class Gameobject{...}
class Block : public Gameobject{...}
class Wall : public Gameobject{...}
class Raw : public Gameobject{...}
在游戏的逻辑中,我使用实际的Block和Wall来管理某些部分,但是像Gameobject一样:
Gameobject* wall = new Wall();
Gameobject* block = new Block();
问题是我希望能够调用一个复制构造函数来复制一个对象,但是如果我调用那么就是
Gameobject* newObj = new Gameobject(ObjToCopy);
它将识别要复制的对象是否为wall / block / somethingelse并复制wall / block / somethingelse类中的数据并创建一个实际的wall / block / somethingelse对象。
如果这有帮助我在Gameobject类中有一个变量,它告诉我该对象的类是什么类的:
if (genericObject.category=="block"){
/* cast is like a block and use it like that */
}else{
/* do other checks */
}