Поэтому в основном я пытаюсь перегрузить оператор "плюс", так что он добавляет изменения в цене1 (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;
}
Вы уже конвертировали coins
в sum()
.
Обновить
temp.coins = (coins + param.coins) * 0.01;
в
temp.coins = coins + param.coins;
И выходной оператор ошибочен, вы печатаете .
самостоятельно
cout << total.sum() << endl;
Любопытно, почему вы используете double
за гроши. У вас обычно нет фракций пенни, кроме как при оплате бензина, поэтому int
будет иметь больше смысла.
Несколько примечаний:
Как temp.coins = coins + param.coins;
выше, обязательно выполняйте только 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