我正在写一个遵循这个标题的树:
class TreeLetters {
private:
Letter* root;
public:
// ...
Letter* Root () const;
class iterator {
private:
Letter* it;
public:
iterator ();
iterator (Letter* letter);
iterator (const iterator & other);
iterator begin ();
iterator end ();
// ...
};
};
尽管很简单,但迭代器的
begin()
出现错误方法,具体如下:TreeLetters::iterator TreeLetters::iterator :: begin () {
return iterator(root); // invalid use of non-static data member 'TreeLetters:root'
}
我一直在阅读一些老问题,唯一至少为我扫除问题的唯一解决方案是创建根
static
,这会产生更大的问题,即不能拥有一棵以上的树。我试过制作根
protected
并添加 friend class TreeLetters
到迭代器的私有(private)成员,但没有任何效果。我也在使用 C++11。我究竟做错了什么?
最佳答案
在我看来,迭代器必须有整个树(这是一个指向树根的指针),而不是对当前字母的引用。你可以引用这个question .
我希望这有助于解决您的问题。
关于c++ - 设置开始迭代器时无效使用非静态数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469436/