我分别给出了两个列表l1,l2和数据[1,1,1]和[2,2,2]。
当我执行l1 + = l2时,它运行下面的程序。
但是,当它返回*时,它会显示分段错误:11
List List::operator+=(const List &other){
unsigned int min_len = (this->_len < other._len) ? _len : other._len;
for (int i = 0; i < min_len; i++){
this->_Array[i] += other._Array[i];
}
return *this;
}
我不知道为什么会出现这个错误。
然而,如果我改变&#34;返回*这个&#34;到&#34;返回0&#34;,它可以工作。
另一个问题是我尝试将List更改为List&amp;,它有另一个地址问题。
答案 0 :(得分:-1)
因为您按值返回列表。像这样声明你的方法:
List& List::operator+=(const List &other)