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

问题描述:

在我的C++程序中,我有自己的自定义映射组成的自定义节点,其中我试图获取“第一个”和“第二个“值(如std :: map)。我尝试了许多不同的语法,但无济于事。请求在“...”中的成员“...”是非类类型的“...”

我知道这个问题的常见修复方法是用替换(*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; 
} 

有关如何正确实施第一个版本和消除此错误的任何建议将不胜感激。

+2

呃,你从'符*返回一个指针',所以当然你必须在返回值上使用' - >'语法...... – nneonneo 2013-04-11 22:05:25

+1

(另外,它根本不清楚你实际要求的是什么“在第一个方法中访问值”?什么是“第一个方法”?什么值?) – nneonneo 2013-04-11 22:07:13

+0

我自然发现 - >语法更有意义。但有了这个程序指导方针,我用(* itr).first提取了第一个值,我不知道为什么这个语法不起作用。 – 2013-04-11 22:07:51

(从评论移动)解决方案是从您的operator *返回参考,就像这样:

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