我不知道如何解决这个问题。我的迭代器构造函数需要是私有的,所以我使用容器返回一个迭代器,但它拒绝编译。
啊
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;
但是最后一个块说“A::iterator 在这个上下文中是私有的”。我有一种感觉,迭代器构造函数只是在 begin() 之外被调用,但我不知道如何修复它。我对 C++ 相当陌生,所以任何帮助将不胜感激!