[英]C++ overloading addition not working correctly
因此,基本上,我試圖重載plus運算符,以使其加起來對price1(1、99)和price2(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;
}
您已經轉換了sum ()
coins
。
更新
temp.coins = (coins + param.coins) * 0.01;
至
temp.coins = coins + param.coins;
並且輸出語句錯誤,您可以打印.
由你自己
cout << total.sum() << endl;
好奇為什么要使用double
硬幣。 除了買汽油時,通常沒有幾分錢的幾分錢,所以int
會更有意義。
注意事項:
如前所述,請確保僅執行temp.coins = coins + param.coins;
。 您不會轉移便士的價值,而只是轉移便士的數量。
此外,結轉便士! 199美分是1美元99美分。 這應該翻譯成類似
int totalCoins = coins + param.coins;
temp.bills = bills + param.bills + totalCoins / 100;
temp.coins = totalCoins % 100;
假設你把硬幣變成了一個int
。
順便說一句,你不傻。 每個大師都是一個初學者。
你應該更新
temp.bills = bills + param.bills;
temp.coins = (coins + param.coins) * 0.01;
至
temp.bills = bills + param.bills + (coins + param.coins) / 100
temp.coins = (coins + param.coins) % 100
順便說一句,硬幣應該是int類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.