gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:56:45 25 4
gpt4 key购买 nike

我正在写一个遵循这个标题的树:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com