我正在尝试创建一个迭代器类作为列表类的成员类,并尝试重载间接运算符 (*) 以访问它指向的列表:
template<class T>
T list<T>::iterator::operator*(iterator& iter)
{
return ((iter.lstptr)->current)->data;
}
其中lstptr
是指向列表current
的指针, 是指向节点类的指针,并且节点类包含data
type的数据成员T
。
迭代器声明如下:
template<class T>
class list
{
public:
class iterator;
};
template<class T>
class list<T>::iterator
{
//stuff
};
我能够很好地编译重载 operator* 的函数定义,但是当我尝试执行以下操作时:
list<int> lst1;
lst1.add(6);
list<int>::iterator IT;
IT = lst1;
//everything above this point compiles fine
int a = *IT; //error here (line fourteen)
我得到的错误说 <1> 我使用了非法间接,而 <2> 它不能从 list::iterator 转换为 int。两个错误都发生在第十四行。
有谁知道我做错了什么以及如何正确重载间接运算符?
注意:如果您需要查看更多代码,请告诉我哪一部分,因为我不想将整个代码放在这里,因为它大约有 205 行,其中 204 行(我认为)没有任何错误。