请求“......”中的成员“...”,这是非类型“......”

时间:2013-04-11 22:03:03

标签: c++ class map

在我的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;
}

非常感谢有关如何正确实施第一个版本并删除此错误的任何建议。

1 个答案:

答案 0 :(得分:3)

(从评论转移)

解决方案是从operator *返回引用,如下所示:

Node<T,P> &operator *() { return *ptr_; }