0

クラスを使用して行列の追加を行っています。クラス 'Matrix' を宣言しました。関数に Matrix のオブジェクトを渡す必要があります。どうすればよいですか?

4

3 に答える 3

1

実際、最良の方法(IMHO)は、をオーバーロードすることoperator+()です。したがって、コードでは、以下のみを使用する必要があります+

class Matrix {
    private:
        // Your code
    public:
        // Your code
        friend Matrix operator+(const Matrix &c1, const Matrix &c2);
}

friend Matrix operator+(const Matrix &c1, const Matrix &c2) { <--- passing by reference
    // Your code to add matrices
}

int main() {
    Matrix A, B;
    Matrix C = A + B;
}

値渡しの場合、Matrix sum(Matrix a, Matrix b)行列のメモリが動的に割り当てられる場合は、コピーコンストラクタを作成する必要があります。

ポインタによる受け渡しMatrix sum(Matrix *a, Matrix *b)はCスタイルのコーディングであるため、それでも正しいですが、C++には適していません。

于 2012-11-28T13:49:58.780 に答える
0

あなたはそれをするためにかなりの数の方法があります。

値別:

void func (Matrix m);

参照による:

void func (Matrix& m);

またはポインタで:

void func (Matrix* m);

どちらを使用するかは、操作のニーズとセマンティクスによって異なります。

于 2012-11-28T13:49:26.920 に答える
0
Matrix object;
// ...
f(object);
于 2012-11-28T13:48:13.570 に答える