怎样在类里用构造函数初始化二维数组

2024年12月01日 13:42
有2个网友回答
网友(1):

上述代码存在两个问题:

1. 构造函数的参数列表定义为一个`int a1[3][2]`二维数组,但是在调用时使用了6个整数(1, 2, 3, 4, 5, 6)。应该将构造函数的形参改为`int a1[3][2]`,并且调用时传入一个符合要求的二维数组。

2. 在调用构造函数时,只创建了一个`matrix a`对象,但是没有将构造函数中的参数传递给对象。应该修改为`matrix a( {{1,2}, {3,4}, {5,6}} )`,使用C++11标准中的列表初始化方式,将一个符合要求的二维数组作为参数传递给构造函数。

以下是修改后的示例代码:

```cpp
#include
using namespace std;

class matrix {
public:
matrix(int a1[3][2]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
a[i][j] = a1[i][j];
}
}
}
private:
int a[3][2];
};

int main() {
matrix a( {{1,2}, {3,4}, {5,6}} ); // 使用二维数组初始化对象
return 0;
}
```

在上述代码中,我们定义了一个类`matrix`,并在其中实现了一个接受二维数组参数的构造函数。在main函数中,我们创建了一个符合要求的二维数组,并使用其来初始化一个`matrix`对象。

运行以上代码,输出结果为空,说明程序运行正确。

网友(2):

#include
using namespace std;
class matrix
{
public:
matrix(int a1[3][2])
{ for(int i=0;i<3;i++)
for(int j=0;j<2;j++)
a[i][j]=a1[i][j];
}
private:
int a[3][2];
};
void main()
{
int A[3][2] = {1,2,3,4,5,6};
matrix a(A);
}

matrix a(1,2,3,4,5,6);于matrix(int a1[3][2])
不一致。现在可以了