错误:在只读对象中分配了成员“ x :: x”

时间:2019-05-06 15:23:09

标签: c++ operator-overloading const assignment-operator

我的代码有一些无法解决的错误。有错误:

  

错误:在只读对象中分配了成员“ Line :: sum”     sum = tmp;

     

错误:只读对象中成员“ Line :: number”的增量     数字++;

     

错误:将“ Line&”类型的引用绑定到“ const Line”会丢弃限定符     return(* this);

Line & Line :: operator += (const Info & new) const{

    Info * tmp = new Info[number+1];

    for (int p=0; p<number; p++) 
        tmp[p] = sum[p];    // Sin memoria dinámica

    tmp[num_paradas] = new;  // Sin memoria dinámica


    delete [] sum;

    sum = tmp;
    number++;

    return(*this);
}

1 个答案:

答案 0 :(得分:3)

对于初学者(C ++ 17标准,5.10标识符)

  

3 此外,某些标识符保留给C ++使用   实施,否则不得使用;没有诊断是   必填。

选择另一个标识符而不是单词new

第二,成员函数具有限定符const

Line & Line :: operator += (const Info & new) const{
                                              ^^^^^

因此,如果未使用说明符mutable声明相应对象的数据成员,则不得更改。

根据operator +=的逻辑,成员函数应声明为不带限定符const

Line & Line :: operator += (const Info & new) {