したがって、基本的には、plus 演算子をオーバーロードして、価格 1 (1, 99) と価格 2 (2, 99) の変化を加算しようとしています。したがって、1.99 + 2.99 は 4.98 ドルになります。コードはコンパイルされますが、ほとんど答えがあります。4.98 の代わりに 3.1.98 が表示されますが、これは正しくありません。どうすればこれを修正できますか? 私はどんな提案やアイデアも受け入れます
MyClass.h というタイトルのヘッダー ファイルを次に示します。
#pragma once
class MyClass
{
public:
int bills;
double coins;
MyClass (int, int);
double sum () { return (bills + (coins * 0.01)); }
MyClass operator+ (MyClass);
MyClass(void);
~MyClass(void);
};
そして私のソースファイル:
#include <iostream>
#include <string>
#include "MyClass.h"
using namespace std;
MyClass::MyClass(void)
{
}
MyClass::~MyClass(void)
{
}
MyClass::MyClass(int d, int c)
{
bills = d;
coins = c;
}
MyClass MyClass::operator+ (MyClass param) {
MyClass temp;
temp.bills = bills + param.bills;
temp.coins = (coins + param.coins) * 0.01; //Here is the problem, I think
return temp;
}
void main()
{
MyClass price1 (1, 99);
MyClass price2 (2, 99);
MyClass total;
total = price1 + price2;
cout << total.bills << "." << total.coins << endl;
}