【发布时间】:2017-09-12 06:07:49
【问题描述】:
dummyNode 声明变量运行良好,直到我将迭代器类编写为嵌套,现在它给我一个错误,无效使用非静态数据成员,'linkedList::dummyNode'c++,如果我删除迭代器类它运行良好 模板
class linkedList
{
private:
listNode<T> * head, *tail;
listNode<T> * dummyNode = new listNode<T>;
int sz = 0;
public:
class iterator
{
public:
iterator()
{
itrNode = head;
}
void operator ++ ()
{
try{
if(itrNode == dummyNode)
throw "Sorry this is the end of the list\n";
else
{
itrNode = itrNode->next;
}
}catch(const char * error)
{
cerr << error;
}
}
T& operator *()
{
return *(itrNode->value);
}
void operator -- ();
private:
listNode<T> * itrNode;
};
linkedList();
~linkedList();
linkedList(T value, int initial_size);
iterator begin();
};
【问题讨论】:
-
你在内部类中的构造函数引用了
head,它是外部类的一个数据成员。您应该改为创建一个函数linkedlist::begin,它返回正确的迭代器。如果您需要迭代器的直接构造函数,它需要一个linkedlist作为参数。 -
对不起,我不明白问题出在哪里?!我也不明白解决方案,请你写代码好吗?!
标签: c++ linked-list iterator inner-classes