私はc++を使用していますが、次のコードからメソッド「getItem()」を呼び出すたびに0が返されるという問題がありますが、これはマップに書き込まれた整数ではなく、マップも空ではありません。「typename...」ステートメントをクラス属性として使用することに問題はありますか?
template <class t>
class P {
public:
P();
int getItem();
private:
std::map<int, P<t>* > m;
typename std::map<int, P<t>* >::iterator it;
bool visited;
};
template <class t>
P<t>::P() {
visited=false;
}
template <class t>
int P<t>::getItem()
{
if(!visited)
it=m.begin();
int i=it->first;
it++;
return i;
}
メソッド「getItem()」は、マップへの変更がなくなった後にのみ呼び出されます。したがって、イテレータが有効でない理由があってはなりません。m[i]=p を呼び出してマップにアイテムを追加しています。
助けてくれてありがとう;)