だから私はC++で小さな数学ライブラリを書いていて、ベクトルを掛けたスカラーを扱うとき、この操作を実行しようとするといくつかの問題が発生します
Vect V2;
Vect V3;
float S;
Vect V1 = V2 + S * (V2 - V3);
オーバーロードされた演算子*で受け取るVect値は、新しいVectオブジェクトであり、操作の(V2-V3)部分の結果ではありません。これがコードの他の関連部分です。デバッグを伴う操作を実行すると、2つのオーバーロードされた演算子はそれ自体では正しく機能しますが、次々と機能しません。
Vect.h
Vect &operator - (const Vect &inVect);
friend const Vect operator*(const float scale, const Vect &inVect);
Vect.cpp
Vect &Vect::operator - (const Vect &inVect)
{
return Vect (this->x - inVect.x,this->y - inVect.y,this->z - inVect.z, 1);
}
const Vect operator*(const float scale, const Vect &inVect)
{
Vect result;
result.x = InVect.x * scale;
result.z = InVect.y * scale;
result.y = InVect.z * scale;
result.w = 1;
return result;
}
また、+および=演算子をオーバーロードしましたが、期待どおりに機能します。発生する唯一の問題は、上記の問題です。