我有以下方法:
void* vpArr_t::operator[](int i) const
{
if (!isEmpty() && i >= 0 && i < nOfItems)
{
list<void*>::iterator it;
int idx;
for(it = array.begin(), idx = 0; idx < i; ++it, ++idx); // go to the i'th element
return *it;
}
else
{
return NULL;
}
}
地点:
array
是列表类型。
我在以下行中得到红色下划线(编译错误):
for(it = array.begin(), idx = 0; idx < i; ++it, ++idx);
在:
it = array.begin()
它说我要设置一个 list<void*>::const_iterator
进入list<void*>::iterator
类型。
但我注意到有一个 iterator
begin()
的重载方法。如何解决这个错误?我正在使用 Visual C++ 2012。
最佳答案
大概array
是一个数据成员,而你在一个const
成员函数中,所以你不能在数据成员上调用非const方法。所以你需要一个const_iterator
:
list<void*>::const_iterator it,
关于c++ - 无法分配列表迭代器 [C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16714007/