gpt4 book ai didi

C++ - 访问私有(private)嵌套迭代器

转载 作者:行者123 更新时间:2023-11-30 02:00:00 26 4
gpt4 key购买 nike

我不知道如何解决这个问题。我的迭代器构造函数需要私有(private),所以我使用容器返回一个迭代器,但它拒绝编译。

啊啊

class A {
public:
class iterator {
friend class A;
public:
virtual ~iterator();
iterator operator++(int);
iterator operator--(int);

private:
iterator(int index, A container);
};


iterator begin();
iterator end();

};

A.cpp

A::iterator A::begin(){
return iterator(0, *this);
}

A::iterator A::end(){
return iterator(length(), *this);
}

然后我这样调用它:

for(A::iterator i = a.begin(); i != a.end(); i++)
std::cout << *i;

但是最后一个 block 说“A::iterator 在此上下文中是私有(private)的”。我感觉迭代器构造函数只在 begin() 之外被调用,但我不知道如何修复它。我是 C++ 的新手,所以我们将不胜感激!

最佳答案

这是因为 iterator 类没有公共(public)构造函数。您应该实现一个公共(public)复制构造函数(可能还有一个复制赋值运算符(参见 the rule of three ))。

关于C++ - 访问私有(private)嵌套迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585511/

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