この問題を解決する方法がわかりません。私のイテレーターコンストラクターはプライベートである必要があるので、コンテナーを使用してイテレーターを返しますが、コンパイルを拒否します。
ああ
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++にかなり慣れていないので、助けていただければ幸いです。