0

したがって、基本的に、静的メンバー関数を使用してゼロの 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;
    }
}

私の問題は、次の静的メンバー関数を使用して、この同じコンストラクターを呼び出して、1 の 2x4 行列を要求したいということです。

Matrix Matrix::Ones(const int noOfRows, const int noOfCols){
    Matrix outO(noOfRows, noOfCols);
    return outO;
} //My static Ones member function

これは明らかに、1 ではなく 0 の 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ステートメントを実装するためのより良い代替手段はありますか? (後で operator<< オーバーロード中にデータ変数を使用するため、データ変数を使用する必要があるため、この形式には制限があります)

4

1 に答える 1