设置开始迭代器时无效使用非静态数据成员

我正在写一个跟随此标题的树:

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。

我在做什么错了?

xhbmf 回答:设置开始迭代器时无效使用非静态数据成员

在我看来,迭代器必须具有整棵树(这是指向树根的指针),而不是对当前字母的引用。您可以参考此question。 希望能帮助您解决问题。

本文链接:https://www.f2er.com/2866814.html

大家都在问