【发布时间】:2013-04-11 22:03:03
【问题描述】:
在我的 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;
}
任何关于如何正确实施第一个版本和消除此错误的建议将不胜感激。
【问题讨论】:
-
呃,你从
operator *返回一个指针,所以当然你必须在返回值上使用->语法...... -
(另外,根本不清楚你到底在问什么。“访问第一种方法中的值”?什么“第一种方法”?什么值?)
-
我自然发现 -> 语法更有意义。但是由于需要这个程序指南,我使用 (*itr).first 提取第一个值,但我不知道为什么该语法不起作用。
-
尝试从
operator *返回一个引用:Node<T,P> &operator *() { return *ptr_; } -
@nneonneo:谢谢,我尝试了你的建议,似乎奏效了。