Мне нужно написать конструктор копирования класса Символ , который обладает атрибутом _weapon *, который является указателем наabstact class.
Персонаж получит производный класс asbtract Weapon класса (Rifle, Sword и т. д.).
Я не могу найти подходящийспособ скопировать атрибут _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.