请求在“...”中的成员“...”是非类类型的“...”
问题描述:
在我的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;
}
有关如何正确实施第一个版本和消除此错误的任何建议将不胜感激。
答
(从评论移动)解决方案是从您的operator *
返回参考,就像这样:
Node<T,P> &operator *() { return *ptr_; }
呃,你从'符*返回一个指针',所以当然你必须在返回值上使用' - >'语法...... – nneonneo 2013-04-11 22:05:25
(另外,它根本不清楚你实际要求的是什么“在第一个方法中访问值”?什么是“第一个方法”?什么值?) – nneonneo 2013-04-11 22:07:13
我自然发现 - >语法更有意义。但有了这个程序指导方针,我用(* itr).first提取了第一个值,我不知道为什么这个语法不起作用。 – 2013-04-11 22:07:51