我很难尝试重载*运算符。我试图使用它来取消引用指针。我已经发布了我正在尝试使用的内容。现在当我尝试使用它时,我收到以下错误indirection requires pointer operand ('Iterator' invalid)
//用法
Iterator List::Search(int key) {
Iterator temp(head);
while (!temp.isNull()) {
if (*temp == key) {
//return temp;
cout << *temp << endl;
}
temp++;
}
return NULL;
}
//页眉文件
class Iterator {
public:
Iterator &operator *(const Iterator &) const;
private:
node* pntr;
};
// CPP档案
Iterator &Iterator::operator *(const Iterator & temp) const {
return temp.pntr;
}
答案 0 :(得分:7)
一元反复数运算符不需要参数。它也不太可能返回Iterator
的引用。在这种情况下,我希望它返回node
的引用。请注意,通过const
运算符允许对数据进行可变访问,并提供仅允许ConstIterator
访问的const
类型,这是惯用的:
class Iterator
{
public:
node& operator*() const;
node* operator->() const;
private:
node* pntr;
};
node& Iterator::operator*() const {
return *pntr;
}
node* Iterator::operator->() const { return pntr; }
node& Iterator::operator*() {
return *pntr;
}