Это конструктор узла в классе списка. Мне нужно сделать глубокую копию винзавода, другого класса в списке инициализации. Элемент - это экземпляр винзавода.Как сделать глубокую копию в списке инициализации конструкторов. C++
List::Node::Node(const Winery& winery) :
item(winery)
// your initialization list here
{
Winery w = winery;
item = w;
}
конструктор винодельни:
Winery::Winery(const char * const name, const char * const location,
const int acres, const int rating) :
name(name),
location(location),
acres(acres),
rating(rating)
{
char *nm = new char[strlen(name) + 1];
char *loc = new char[strlen(location) + 1];
strcpy(nm, this->name);
strcpy(loc, this->location);
this->name = nm;
this->location = loc;
this->acres = acres;
this->rating = rating;
}
Сделайте ctor для 'winery', который делает глубокую копию. BTW: ctor-init-list и ctor-body выглядят так, как будто они дублируют друг друга. – Deduplicator
Вы правы, я возьму это. Я добавил код, который у меня есть для конструктора winery. –
«глубокая копия» и «мелкая копия» - это термины, которые обычно используются только в языках GC, которые не имеют прямой поддержки значений (в отличие от только указателей). – o11c