そのため、演算子のオーバーロードに取り組んでいますが、否定演算子が本来の動作をしていないことに気付きました。何が間違っていたのか正確にはわかりません。
.h 署名
Vector & Vector::operator-()
.cpp の実装
Vector & Vector::operator-()
{
pVec[0] = -pVec[0];
pVec[1] = -pVec[1];
pVec[2] = -pVec[2];
return *this;
};
呼び出し:
cout << "-Vector E = " << -VecE << (-VecE).Magnitude() << endl << endl;
VecE の変数は [0, 1 , 1] のようなものです。これは、これが呼び出されたときに [0, -1, -1] として表示する必要があることを意味しますが、そうではありません。それで、私は何が欠けていますか?
編集: コピー コンストラクターと iostream<< オーバーロード コードの追加:
Vector::Vector(const Vector & Copy)
{
pVec = new double[3];
if (0 == pVec)
{
exit(1);
}
else
{
pVec[0] = Copy.pVec[0];
pVec[1] = Copy.pVec[1];
pVec[2] = Copy.pVec[2];
}
};
ostream & operator<<(ostream & Out, Vector & RHS)
{
cout.precision(1);
Out << fixed << "[ " << RHS.pVec[0] << " " << RHS.pVec[1] << " " << RHS.pVec[2] << " ]" << resetiosflags (ios_base::fixed);
return Out;
};