2014-09-02 3 views
0

Скажем, у меня есть класс General, который содержит указатель на абстрактный класс * _abstract. Если я хочу реализовать конструктор общих копий, как это делается?copy constructor copy pointer to abstract class

Я стараюсь это, но он не:

General::General(const General &other) 
{ 
    *_abstract = *other._abstract; 
} 

Я также попытался:

General::General(const General &other) 
{ 
    *_abstract = new Abstract(); 
    *_abstract = *other._abstract; 
} 

, который не является невозможным из-за инициализации абстрактного класса (не конструктор)

ответ

1

Если вам нужно глубокую копию абстрактного класса, затем добавьте функцию виртуального клонирования в абстрактный класс и скопируйте его с этим.

understanding virtual copy constructors

+0

Я нашел эту ссылку, которая дает пример того, что вы сказали, спасибо! http://www.parashift.com/c++-faq/copy-of-abc-via-clone.html –