我需要从一个类的一个实例中获取几个动态分配的数组,然后将它们复制到另一个实例中。问题是我不允许更改头文件,也没有机会重载赋值运算符。
这是Winery类的头文件。我不允许对此文件进行任何更改:
class Winery
{
public:
Winery(const char * const name, const char * const location, const int acres,
const int rating);
virtual ~Winery(void);
const char * const getName() const { return name; }
const char * const getLocation() const { return location; }
const int getAcres() const { return acres; }
const int getRating() const { return rating; }
private:
char *name;
char *location;
int acres;
int rating;
};
Winery的构造函数:
Winery::Winery(const char * const _name, const char * const _location,
const int acres, const int rating) :
acres(acres),
rating(rating)
{
name = new char[sizeof(name) + 1];
location = new char[sizeof(location) + 1];
strcpy(name, _name);
strcpy(location, _location);
}
这是我需要复制的地方。这是使用链表,headByName和newNode都是带有1个Winery实例(称为item)和2个指向其他节点的结构:
void List::insert(const Winery& winery)
{
if (headByName == nullptr)
{
Node *newNode = new Node(winery);
headByName = newNode;
return;
}
}
最后,Node结构及其成员。这些是我允许使用的唯一节点,我无法对此文件进行任何更改:
private:
struct Node
{
Node(const Winery& winery);
Winery item;
Node *nextByName;
Node *nextByRating;
};
Node *headByName;
Node *headByRating;
};
我交给的Winery实例中的数组在交给我后立即被释放,所以我需要将数组从winery中取出并放入headByName。