Как скопировать производный класс в другой?
У меня терминологический недостаток, поэтому я попытаюсь проиллюстрировать это примером.
Мы играем в карточную игру с компьютерным игроком и человеком-игроком. Card и Command - это другие классы.
class Player
{
Card *Hand[4];
// etc...
};
class Human: public Player
{
Command getCommand();
void PlayCard(Card card);
void quit();
// etc...
};
class Computer: public Player
{
Command ai();
void PlayCard(Card card);
// etc...
};
И где-то в основной функции мы имеем ...
// ...
Human p1; // Assume initialized and usable.
if(p1.getCommand() == QUIT)
{
cout << "PLAYER 1 RAGEQUITS WHAT A NOOB LOL << endl;
cout << "A COMPUTER WILL NOW TAKE OVER." << endl;
p1.quit()
p1 = new Computer(); // THE IDEA BEING THAT WE WANT TO PRESERVE p1's MEMBERS.
}
// ...
То, что я пытаюсь сделать, - это преобразовать p1 в «компьютер», сохраняя при этом состояние его членов.
Мы используем конструктор копирования для этого? Если нет, какие методы вы используете?
РЕДАКТИРОВАТЬ: Это способ использования оператора присваивания?
Computer& Human::operator=(const Human &h) // Assignment operator
{
Hand = h.Hand;
member2 = h.member2;
member3 = h.member3;
...
return *this;
}
Нужно ли удалять / освобождать что-либо в основном?