[英]C++, no match for 'operator=' in … error
I am trying to redefine the ==
operator in class Regla and i am getting this error in every assignation to iterators : 我试图重新定义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;
}
How about with: 怎么样:
list<Condicion>::const_iterator it,it2;
The parameter r
is passed by const reference, and so is the implicit this
because the operator itself is marked as const
, so non-const iterators are disallowed for members of both. 参数
r
是由常量引用传递,所以是隐式this
是因为操作者本身被标记为const
,所以非const迭代器被禁止两者的成员。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.