vector<vector<int>> C11 = add(subtract(add(P5, P4), P2), P6);该行出现错误:严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E0461 非常量引用的初始值必须为左值 ,请你改正
时间: 2023-06-16 14:03:58 浏览: 92
这个错误是因为非常量引用的初始值必须为左值,而 add、subtract 函数的返回值不是左值。解决方法是将参数改为常量引用,即将函数定义改为如下形式:
```
vector<vector<int>> add(const vector<vector<int>>& A, const vector<vector<int>>& B) {
int n = A.size(), m = A[0].size();
vector<vector<int>> res(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
res[i][j] = A[i][j] + B[i][j];
}
}
return res;
}
vector<vector<int>> subtract(const vector<vector<int>>& A, const vector<vector<int>>& B) {
int n = A.size(), m = A[0].size();
vector<vector<int>> res(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
res[i][j] = A[i][j] - B[i][j];
}
}
return res;
}
```
然后将调用函数的语句改为:
```
vector<vector<int>> C11 = add(subtract(add(P5, P4), P2), P6);
```
阅读全文