クラスを使用して行列の追加を行っています。クラス 'Matrix' を宣言しました。関数に Matrix のオブジェクトを渡す必要があります。どうすればよいですか?
質問する
89 次
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 に答える