C++, 'operator=' 不匹配...错误

标签 c++ match operator-keyword candidate

我正在尝试在 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/

相关文章:

c++ - 返回 boolean 数组

r - R中的条件合并/替换

arrays - 解析 Powershell 数组中的 RegEx IP 匹配项

c++ - 不同类如何操作一个函数一个

c++ - Dev-C++ Hello world 不显示

c++ - Jsonxx - 迭代 Json

c++ - 如何从 'char const*' 中删除常量

r - match() 与 %in% 运算符

c++ - 如何使用友元函数在模板类之外重载运算符==?

关于引用运算符返回类型的 C++ 基本概念