我无法弄清楚如何解决这个问题。我的迭代器构造函数需要是私有的,所以我使用容器来返回一个迭代器,但是它拒绝编译。
A.H
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 ++很新,所以任何帮助都会受到赞赏!