我正在使用 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 将项目添加到地图中。
谢谢你的帮助 ;)