C++ 分段故障&;过载运算符

C++ 分段故障&;过载运算符,c++,C++,我给出了两个列表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

我给出了两个列表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;
}
列表::运算符+=(常量列表和其他){
无符号整数最小值=(此->最小值<其他.\u最小值)?\u最小值:其他.\u最小值;
对于(int i=0;i_数组[i]+=other._数组[i];
}
归还*这个;
}
我不知道它为什么会犯这个错误

但是,如果我将“return*this”更改为“return 0”,它可以工作


另一个问题是,我试图将列表更改为列表&,它遇到了另一个地址问题。

因为您要按值返回列表。如下所示声明您的方法:


List&List::operator+=(const List&other)

您的操作符的签名应该是
List&List::operator+=(const List&other){
。分段错误最有可能出现在制作
List
副本时。您的程序中的其他地方有一个bug。我的水晶球认为您应该搜索“三人法则“。请给我们一个答案好吗?按值返回
列表
在思想上是错误的,但在没有帮助的情况下不会是错误的。正如在问题下的评论中指出的,这可能是由于,但可能是由许多其他问题引起的。除非提问者提供更多的代码,否则无法明确回答此问题。”。