Тема: C++ , потрібна допомога(
Була поставлена задача перегрузити оператори +,++,+=,=,<,> , але пороблема в мене виникла не в цьому. Побудувавши вже цілу програму, я помітив, що вона працює некоректно. Відповідно, протестувавши покроково, я зрозумів, що якимось чудом число змінної b з об'єкту result, в мене записується в змінну b об'єкту First. Хто може, підкажіть де я лоханувся в коді? Буду вдячний ...
#include <iostream>
#include <locale>
#include <locale.h>
using namespace std;
void AllActions()
{
int x, y, z;
cout << "Введіть три числа (кількість сторін кожного грального кубика) " << endl; cin >> x >> y >> z;
class CDice
{
public:
int b, num;
CDice(int x, int io) :b(x), num(io) {}
CDice() :b(0) {}
int input() { b = rand() % b + 1; return b; }
void output() { cout << "Бали кубика № " << num << " = " << input() << endl; }
CDice &operator + (CDice &plus) { this->b = this->b + plus.b; return *this; }
CDice &operator - (CDice &minus) { this->b = (this->b - minus.b); return *this; }
CDice &operator ++ (int) { this->b++; return *this; }
CDice &operator = (CDice &equal) { this->b = equal.b; return *this; }
CDice &operator += (const CDice & v) { this->b = this->b + v.b; return *this; }
bool operator < (CDice &val) { return (this->b < val.b); }
bool operator > (CDice &val) { return (this->b > val.b); }
};
CDice First(x, 1), Second(y, 2), Third(z, 3), result(0, 0);
int choice;
while (true)
{
cout << "=====================" << endl;
cout << "Будь ласка, виберіть дію" << endl;
cout << "=====================" << endl;
cout << "Виберіть 1, якщо хочете киути кубики" << endl;
cout << "Виберіть 2, якщо хочете знайти суму балів" << endl;
cout << "Виберіть 3, якщо хочете суму балів збільшити на 1 " << endl;
cout << "Виберіть 4, якщо хочете (до Суми балів + Бали 2-го кубика) " << endl;
cout << "Виберіть 5, якщо хочете отримати результат кубика з MAX та MIN кількостями балів " << endl;
cout << "Виберіть 6, якщо хочете вийти із програми " << endl;
cin >> choice;
if (choice == 1)
{
First.output();
Second.output();
Third.output();
}
if (choice == 2)
{
result = (First + Second + Third);
cout << "Сума балів = " << result.b << endl;
result.b = 0;
}
if (choice == 3)
{
result = (First + Second + Third);
result++;
cout << "(Сума балів) + 1 = " << result.b << endl;
result.b = 0;
}
if (choice == 4)
{
result = (First + Second + Third);
result += Second;
cout << "Сума балів = сума балів + бали 2-го кубика, що = " << result.b << endl;
result.b = 0;
}
if (choice == 5)
{
if (First < Second)
{
if (Second < Third)
{
cout << "Max балів - кубик 3 = " << Third.b << endl;
}
else
cout << "Max балів - кубик 2 = " << Second.b << endl;
}
else
{
if (First<Third)
cout << "Max балів - кубик 3 = " << Third.b << endl;
else
cout << "Max балів - кубик 1 = " << First.b << endl;
}
if (First > Second)
{
if (Second > Third)
{
cout << "Min балів - кубик 3 = " << Third.b << endl;
}
else
cout << "Min балів - кубик 2 = " << Second.b << endl;
}
else
{
if (First>Third)
cout << "Min балів - кубик 3 = " << Third.b << endl;
else
cout << "Min балів - кубик 1 = " << First.b << endl;
}
}
if (choice == 6)
{
break;
}
}
}
int main()
{
setlocale(0,"uk-UA");
AllActions();
_getwch();
}