我有一个头文件,其中包含一个名为'list'的类,以及一个名为'node'的结构,该结构位于该类的私有部分中。总之,这个类和结构将组成一个双重线程的酒厂对象列表(酿酒厂就是它自己的类)。我想知道的是,如果最好在列表构造函数和解构函数中实现和解除节点struct的变量 (像这样):
list::list()
{
struct node
{
item = winery::winery()
nextByName = nullptr;
nextByRating = nullptr;
};
headByName = nullptr;
headByRating = nullptr;
}
list::~list()
{
struct node
{
delete item;
delete nextByName;
delete nextByRating;
};
delete headByName;
delete headByRating;
}
如果单独实施和取消实施它们会更好 (像这样):
list::node::node()
{
item = winery::winery()
nextByName = nullptr;
nextByRating = nullptr;
}
list::node::~node()
{
delete item;
delete nextByName;
delete nextByRating;
}
或者我应该做别的什么?我看过网上,在我的教科书中,但确实没有明确的答案。我真的很感谢你们的帮助,如果你能解释为什么你的解决方案是最好的(如果它是最好的),我将非常感激。几个月前我才开始学习C ++。
顺便说一句,这就是我的list.h文件:
#include "winery.h"
class list
{
public:
list();
~list();
void addWinery();
void removeWinery();
void displayByRating() const;
void displayByName() const;
void searchByName() const;
private:
struct node
{
winery item;
node * nextByName;
node * nextByRating;
};
node * headByName;
node * headByRating;
};