在我的c ++程序中,我有自己的自定义地图,其中包含自定义节点,我试图获取"第一个"和"第二"值(如std :: map)。我尝试了许多不同的语法,但无济于事。
我知道此问题的常见修复方法是将(*key_Iterator).first
替换为(*key_Iterator)->first
,但在这种情况下,我需要能够访问第一种方法中的值。
我在迭代器类中添加了变量,但程序无法识别它们。
template <class T, class P>
class Iterator {
public:
Node<T,P>* operator*() { return ptr_; }
private:
Node<T,P>* ptr_;
T first;
P second;
}
非常感谢有关如何正确实施第一个版本并删除此错误的任何建议。
答案 0 :(得分:3)
(从评论转移)
解决方案是从operator *
返回引用,如下所示:
Node<T,P> &operator *() { return *ptr_; }