我正在尝试这样做:
typedef std::map<std::string, time_t> my_map;
const mymap& some_function();
class bla
{
private:
my_map::iterator current
bla(const mymap& m) : current(m.begin())
{ }
}
它不工作。更复杂的实际错误消息是:
错误:没有匹配函数调用'std::_Rb_tree_iterator, long int> >::_Rb_tree_iterator(std::map, long int>::const_iterator)'
我尝试将初始化/分配移动到构造函数主体:
{ current = m.begin(); }
这也不起作用。所以我想,的类型current
是错误的,所以我只是让编译器推断:
...
decltype(my_map::begin()) current;
...
这也不起作用。
我只需要一个在bla
构造时设置的迭代器成员,因此我不必在一些愚蠢的额外函数中显式设置它,并且可以通过以下方式在外部迭代地图:
bool bla::do_stuff(...output...)
{
if(current = m.end())
return false;
balblabla(current);
++current;
return true;
}