我正在尝试在 Regla 类中重新定义 ==
运算符,但我在对迭代器的每次赋值中都遇到了这个错误:
no match for 'operator=' in 'it2 = (((const std::list<Condicion, std::allocator<Condicion> >*)(+r)) + 4u)->std::list<_Tp, _Alloc>::begin [with _Tp = Condicion, _Alloc = std::allocator<Condicion>]()'
bool Regla::operator ==(const Regla &r) const{
if(this->condiciones.size()!=r.condiciones.size())
return false;
if(this->acciones.size()!=r.acciones.size())
return false;
list<Condicion>::iterator it,it2;
it2 = r.condiciones.begin();
for(it=condiciones.begin();it!=condiciones.end();it++){
if((*it)!=(*it2)) return false;
it2++;
}
list<Accion>::iterator it3,it4;
it4 = r.acciones.begin();
for(it3=acciones.begin();it3!=acciones.end();it3++){
if((*it3)!=(*it4)) return false;
it4++;
}
return true;
}
最佳答案
怎么样:
list<Condicion>::const_iterator it,it2;
参数r
是const引用传递的,隐含的this
也是,因为运算符本身被标记为const
,所以非-const 迭代器对于两者的成员都是不允许的。
关于C++, 'operator=' 不匹配...错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446035/