因此,基本上我的程序使用静态成员函数请求 2x4 零矩阵的工作方式如下:
Matrix Matrix::Zeros (const int noOfRows, const int noOfCols){
Matrix outZ(noOfRows, noOfCols);
return outZ;
} //My static Zeros member function
这是指我的构造函数,它将零值存储在 2x4 矩阵中,如下所示:
Matrix::Matrix (const int noOfRows, const int noOfCols){
this->noOfRows = noOfRows;
this->noOfCols = noOfCols;
data = new double[noOfRows*noOfCols];
for(int i=0; i< noOfRows*noOfCols; i++){
data[i] = 0;
}
}
我的问题是我想调用这个相同的构造函数来请求使用以下静态成员函数的 2x4 矩阵:
Matrix Matrix::Ones(const int noOfRows, const int noOfCols){
Matrix outO(noOfRows, noOfCols);
return outO;
} //My static Ones member function
这显然会返回一个 2x4 的零矩阵,而不是一。因此,我一直试图找出一种方法在我的构造函数中有一个 if 语句,以便它根据我在静态成员函数中返回的对象名称创建一个零或一的矩阵,即
if(outZ){
for(int i=0; i< noOfRows*noOfCols; i++){
data[i] = 0;
}
}
if(outO){
for(int i=0; i< noOfRows*noOfCols; i++){
data[i] = 1;
}
}
这是可能的还是有更好的选择来实现这个 if 语句?(我在这种格式上受到限制,因为我需要使用 data 变量,因为我稍后在 operator<< 重载期间使用它)