"умное" клонирование экземпляров
От: BlaineMono  
Дата: 22.12.08 13:01
Оценка:
Задача — создать клон экземпляра произвольного класса-наследника базового класса.

Сейчас клонирование реализовано на уровне базового класса, втупую:

void CControl::Assign(CControl* source)
{
    if (typeid(*this) != typeid(*source))
        return;

    memcpy(this, source, source->size_of);

    //cut
}


Однако возникла необходимость в нескольких наследниках добавить члены типа wstring. В этом случае использование memcpy() гарантирует множество приятных впечатлений, разумеется.

Вопрос: как можно реализовать выборочное клонирование, учитывающее наличие в членах класса сложных вещей типа wstring, ну или хотя бы указателей на уже инициализированные структуры данных?

Очень, очень хочется обойтись без поэлементного копирования — классов-наследников в проекте порядка пятидесяти и все они довольно толстые.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.