它告诉我不能把第19行和第20行的手镯转换成整数



无法转换"大括号包围的初始值设定项列表>"到赋值中的"int"如上所述,第19行和第20行,特别是当我描述数组的内容时,编译器告诉了我上面的行。我知道这是一个很长的代码,我会感谢你的回答。我想我已经尽可能详细了。

#include <iostream>
using namespace std;
class matrix{
private:
static const int x =3;
int m1[x][x];
int m2[x][x];
int c[x][x];
public:
matrix(){
int m1[x][x];
int m2[x][x];
int c[x][x];
c[x][x];
}
matrix(int m1[x][x], int m2[x][x], int c[x][x]){
m1[x][x]= {{1,2,3},{4,5,6},{7,8,9}};
m2[x][x]= {{10,11,12},{13,14,15},{16,17,18}};
c[x][x];
}
matrix operator+(matrix& m2){
matrix result;
for( int i=0; i<x; i++){
for(int j=0; j<x; j++){
result.m1[i][j];
result.m2[i][j];
result.c[i][j] = result.m1[i][j] + result.m2[i][j];
}
}
return result;
}
matrix operator-(matrix& m2){
matrix result;
for( int i=0; i<x; i++){
for(int j=0; j<x; j++){
result.m1[i][j];
result.m2[i][j];
result.c[i][j] = result.m1[i][j] - result.m2[i][j];
}
}
return result;
}
matrix operator*(matrix& m2){
matrix result;
for( int i=0; i<x; i++){
for(int j=0; j<x; j++){
result.m1[i][j];
result.m2[i][j];
result.c[i][j] = result.m1[i][j] * result.m2[i][j];
}
}
return result;
}

friend ostream& operator <<(ostream& outs, const matrix& m){
outs << m<< endl;
return outs;
}
};
int main(){
matrix m1;
matrix m2;
cout <<m1+m2<<endl;
return 0;
}

如前所述,此代码从上到下都是错误的。它真的应该扔掉。让我们修复最基本的错误。类别CCD_ 1表示3x3矩阵。所以应该这样写

class matrix
{
private:
static const int x = 3;
int elem[x][x]; // the elements of a 3x3 matrix
public:
... // more code
};

在您的版本中

class matrix
{
private:
static const int x =3;
int m1[x][x];
int m2[x][x];
int c[x][x];
public:
... // more code
};

类具有三个不同的3x3矩阵。这是不对的。

所以扔掉你的代码,重新开始上课,就像我上面写的那样。

以下是operator+在我的类版本中的外观

matrix operator+(const matrix& m2) {
matrix result;
for (int i=0; i<x; i++) {
for (int j=0; j<x; j++) {
result.elem[i][j] = elem[i][j] + m2.elem[i][j];
}
}
return result;
}

很难理解你要做什么,你在构造函数中有参数,然后你要重新初始化它们。

但我可以帮助您使用初始化器列表初始化2d Matix

matrix():m1{{1,2}, {3, 4}} ,...{}

最新更新