我是C ++模板的新手。我目前正在开发一个项目,我需要使用模板实现双向链接列表。这是我目前所拥有的:
template<class ItemType>
class SortedList
{
public:
SortedList();
~SortedList();
bool Insert (ItemType toAdd);
bool Delete (ItemType toDelete);
void Print();
private:
SortedList ( const SortedList & copyFrom );
SortedList & operator= ( const SortedList & assignFrom );
struct Node
{
Node ( ItemType item, Node * p = NULL, Node * n = NULL )
{ data = item; prev = p; next = n; }
ItemType data;
Node * prev, * next;
};
Node * list;
};
template<class ItemType>
SortedList<ItemType>::SortedList()
{
list == NULL;
}
template<class ItemType>
SortedList<ItemType>::~SortedList()
{
Node * curr = list;
while ( curr != NULL )
{
Node * tempNext = curr->next;
delete current;
current = tempNext;
}
}
但是,在我的析构函数中,为什么我不能访问节点元素?现在正在编译该方法内部的代码,但不会抛出错误。但是,如果我尝试使用 - &gt;在curr,next或prev不会出现。为什么我无法访问这些?我觉得我错过了一些非常明显的事情来开始。
另外,如何在函数头中初始化list == NULL,而不是在类之外进行?
答案 0 :(得分:0)
delete current;
current = tempNext;
而不是:
delete curr;
curr = tempNext;
class SortedList
{
public:
SortedList()
:
list(nullptr)
{ }