我需要编写具有 _weapon *属性的 Character 类的副本构造函数指向摘要表类的指针。
角色将装备抽象的 武器 类的衍生类(步枪,剑,...等)。
我找不到将 _weapon *属性从一个实例复制到另一个实例的正确方法。
如果我仅将copy属性分配给instance属性,则两个Character都将具有指向同一对象的指针。
如果我尝试实例化一个新的 Weapon 类,由于 Weapon 是一个抽象类,编译器会对我大喊大叫。
可以实例化派生类并将复制对象的内容复制到前者吗?
什么是“正确”的解决方案?
class Weapon
{
[...]
virtual void function() = 0;
}
class Character
{
[...]
private:
Weapon *_weapon;
}
void Character(Character const ©)
{
[...]
_weapon = copy._weapon //NOPE Both would point to the same object
***
_weapon = new Weapon; //NOPE Weapon is an abstract class
***
_weapon = new Rifle; //Rifle is a derived class of Weapon
memcpy(copy._weapon, _weapon) //Is that possible memory speaking ? What if the copy was a sword ?
}
我知道这是一个相当“简单”的问题,我是C ++的新手,我无法解决它。
PS:它是C ++ 98,没有Boost,没有STL。