我正在为一个类的一个赋值工作,并且有一个链表来保存每个节点中的一个对象。节点实现为结构。我在初始化对象时遇到问题,因为我似乎需要进行深层复制,但事实并非如此。对于我的生活,我无法弄清楚如何使它成为一个深刻的副本。每次删除原始对象时,名称和位置也会被删除。
我知道同一班级的其他同学也提出了类似的问题,例如this,但我的代码是一样的,我仍然遇到问题。
节点的构造如下:
List::Node::Node(const Winery& winery) :
item(winery),
nextByName(nullptr),
nextByRating(nullptr)
{
}
Node结构的定义:
struct Node
{
Node(const Winery& winery); // constructor
Winery item; // an instance of winery
// (NOT a pointer to an instance)
Node *nextByName; // next node in the name thread
Node *nextByRating; // next node in the rating thread
};
酒厂类的构造如下:
Winery::Winery(const char * const name, const char * const location, const int acres, const int rating) :
name(new char[strlen(name) + 1]),
location(new char[strlen(location) + 1]),
acres(acres),
rating(rating)
{
strcpy(this->name, name);
strcpy(this->location, location);
}
我相当确定这是一个深层复制,所以问题出在节点的构造上,而不是酿酒厂。