最近分数クラスを作成していますが、演算子をオーバーロードすると意図した結果が得られません。その理由はわかりません。誰かが光を当てるのを手伝ってくれることを願っています。関連するコードのみを含めようとしました。
const fraction fraction::operator* (fraction frac)
{
return fraction(frac.numerator * numerator, frac.denominator * denominator);
}
const fraction fraction::operator* (int num)
{
return fraction(numerator*num, denominator);
}
fraction& fraction::operator= (const fraction &rightSide)
{
return *this;
}
これらの操作は、正しく機能していることがわかったものです (frac# は小数オブジェクトです)。
frac1 = frac2;
frac3 = frac4 * 2;
frac5 = frac6 * frac7;
上記の操作は期待どおりに機能しますが、次の操作では frac8 が初期化されたままになります。
fraction frac8(4, 5); // Initializes a fraction, setting numerator = 4, denominator = 5
frac8 = frac8 * 3; // This doesn't quite work, leaving frac8 with the original numerator/denominator
frac3 = frac4 * 2 が機能するのに frac8 = frac8 * 3 が機能しない理由がよくわかりません。何か案は?代入演算子で const キーワードを使用すると、解決策ではないことがわかりました。