行列を表すクラスを作成しましたが、すべて 算術演算子を上書きします。ここで単項マイナスをオーバーロードの例です演算子のオーバーロードとオブジェクトへのポインタ
RegMatrix.h:
const RegMatrix operator -();
RegMatrix.cpp
const RegMatrix RegMatrix::operator -()
{
RegMatrix newMatrix(*this);
newMatrix *= -1;
return newMatrix;
}
私はこのようなスタック上のオブジェクトをインスタンス化する場合さて、これは完璧に動作しますRegMatrix a(3,3,v)
( vは値のベクトルですが、重要ではありません)。 私は(main.cppにで)このようnew
キーワードを使用する場合:
RegMatrix* a = new RegMatrix(3,3,v);
RegMatrix* b = -a; //<---ERROR HERE
を、私はこれがなぜ起こるかwrong type argument to unary minus
任意のアイデアを得ますか?ありがとう!
P.S. 別の質問: '='演算子は自動的にコピーコンストラクタによってオーバーライドされます。
'operator ='はコピーコンストラクタによって_not_が上書きされます。あなたは自分でそれをオーバーライドする必要があります。しかし、 '='演算子_at宣言_を使用すると、コピーコンストラクタが呼び出されます。他の場所では、 'operator ='が呼び出されます。 –
@Etienne de Martel: 'operator ='は** overriden **ではありませんが、** overloaded **です。標準では、特に** overriden **の機能に** virtual **キーワードを使用する必要があります。 –
@Als Wooops。私はいつもこれらの2つの用語を混同します。 –