我意识到我很愚蠢,所以请对我放轻松。是的,这是一项任务,但我想了解我做错了什么,而不仅仅是答案。
我正在尝试为 BSTIterator 类模板中的二叉搜索树上的迭代器编写一个 operator== 和一个 operator!= 函数。
给定(都在同一个类模板中):
private:
BSTNode<Data>* curr;
...
bool operator==(BSTIterator<Data> const & other) const {
(here's where I do my magic)
}
操作员的设置相同!=。
我为 == ...
return (&curr == other);
我认为我不需要括号,但无论如何......这就是我所拥有的!=
return !(&curr == other);
我的编译器有问题!= 但显然不是 ==。
它吐出了很多狼吞虎咽的东西,但据我所知,相关部分是:
'&((const BSTIterator*)this)->BSTIterator::curr != other' 中的 'operator!=' 不匹配
它引用了上面写着的那一行return !(&curr == other);
我认为起初编译器也不喜欢我的 operator== 函数,但我现在看不到对它的引用。为什么除了 之外它们基本相同时,它会喜欢一个而不是另一个!
?
如果我需要包含更多信息,请告诉我。