[英]Initializing a std::map iterator class member
我正在尝试这样做:
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;
}
您正在尝试将const_iterator
分配给iterator
。 有两种解决方案:
bla(my_map& m) : current(m.begin()) {}
)获取地图。 const_iterator
。 在const上下文中,您只能获取const_iterator
:
my_map::const_iterator current;
bla(const my_map & m) : current(m.begin()) { }
如果要使用非常量迭代器,则必须从非常量引用构造bla
对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.