设置开始迭代器时无效使用 non-static 数据成员
Invalid use of non-static data member when setting begin iterator
我正在写一个遵循这个的树 header:
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
,但没有任何效果。我也在使用 C++11。
我做错了什么?
在我看来,迭代器必须拥有整棵树(它是指向树根的指针),而不是对当前字母的引用。可以参考这个question。
希望能帮到您解决问题。
我正在写一个遵循这个的树 header:
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
,但没有任何效果。我也在使用 C++11。
我做错了什么?
在我看来,迭代器必须拥有整棵树(它是指向树根的指针),而不是对当前字母的引用。可以参考这个question。 希望能帮到您解决问题。