クラス A と、このクラスを指し、その友達である単純な (そして非常に限定された) イテレーター A_iterator があります。
#include<vector>
#include<iostream>
using namespace std;
class A_iterator{
public:
A_iterator(int index) : _index(index) {}
int operator*();
private:
int _index;
};
class A{
friend class A_iterator;
public:
typedef A_iterator iterator;
A() { _elems.push_back(1); _elems.push_back(2); }
private:
static vector<int> _elems; //line 19
};
vector<int> A::_elems; // line 22
int A_iterator::operator*()
{
return A::_elems[_index]; //line 26
}
int main()
{
A a;
A::iterator it(0);
cout << *it << endl; //line 33
}
これはうまくいきます。ただし、_elems を静的にしたくありません。19 行目から static キーワードを削除し、22 行目を削除する場合、26 行目をどのように変更すればよいですか? 33 行目は変更できません。