在为Matrix类实现初始值设定项列表构造函数时不能直接访问此数组的原因是,构造函数在对象创建时被调用,此时对象的成员变量还未被初始化。因此,在构造函数中无法直接访问初始值设定项列表中的数组。
为了解决这个问题,可以通过以下两种方式来实现初始值设定项列表构造函数:
class Matrix {
public:
Matrix(int rows, int cols) : numRows(rows), numCols(cols), data({{0}}) {
// 其他初始化操作
}
private:
int numRows;
int numCols;
std::vector<std::vector<int>> data;
};
在上述代码中,通过初始化列表将numRows和numCols初始化为传入的参数值,同时将data初始化为一个包含一个元素的二维向量,初始值为0。
class Matrix {
public:
Matrix(int rows, int cols) : numRows(rows), numCols(cols) {
data.resize(numRows);
for (int i = 0; i < numRows; ++i) {
data[i].resize(numCols);
for (int j = 0; j < numCols; ++j) {
data[i][j] = 0;
}
}
// 其他初始化操作
}
private:
int numRows;
int numCols;
std::vector<std::vector<int>> data;
};
在上述代码中,通过resize函数调整data的大小,然后使用嵌套循环对数组进行赋值,将所有元素初始化为0。
以上两种方式都可以在构造函数中对数组进行初始化,以满足初始值设定项列表的需求。
领取专属 10元无门槛券
手把手带您无忧上云