在创建一类二维矩阵时遇到了这个问题:
错误:
E0461 非常量参数引用的初始值必须是左值
C2440 返回:无法将“Matrix::MatrixRow”转换为“double &”
意思很清楚:Matrix 类中的运算符 [] 返回指向其中一行的指针,然后 MatrixRow 类中的运算符 [] 从数组中返回元素本身。实际上,下面这段代码是 Chat GPT 写给我的,因为这是我第一次遇到这样的语法,我只是想知道我到底做错了什么。我在 stack overflow western 上找到了一篇有此错误的文章,但我不知道如何将此解决方案应用于我的示例 https://stackoverflow.com/questions/55083497/c-cannot-convert-input-param-to-reference中的错误
class MatrixRow{
public:
MatrixRow(double* matrixRow) : matrixRow(matrixRow) {}
double& operator[](int index){
return matrixRow[index];
}
private:
double* matrixRow;
};
class Matrix{
MatrixRow& operator[](int index){
return MatrixRow(matrix_arr[index]);
}
private:
double** matrix_arr;
};