Ссылка на объект класса внутри класса не работает - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь написать Программу для решения загадки Die Hard Bucket. Большая часть кода работает хорошо, за исключением функции заливки, которая ссылается на объекты класса.

Я дважды проверил аритмию в заливкеи проверили, что функция считывает правильные значения емкости

    #include "stdafx.h"
    #include <iostream>
    #include <string>

    using namespace std;

    class Bucket{
    private:
string name;
int capacity, contents;

    public:
Bucket(string name_, int capacity_){
    name = name_;
    capacity = capacity_;
}
void Print(){
    cout << "Bucket Name: " << name << endl;
    cout << "Capacity: " << capacity << " Gallons" << endl;
    cout << "Contents: " << contents << " Gallons" << endl;
}
void Fill(){
    contents = capacity;
}
void Empty(){
    contents = 0;
}
void Pour(Bucket A){
    if (contents + A.contents > A.capacity){
        contents -= A.capacity;
        A.contents = A.capacity; //Error Here
    }
    else{
        A.contents += contents; //Error Here
        contents = 0;
    }
}
    };

    int main(){
Bucket A1("A", 3), A2("B", 5);
int x;

cout << "0 - Exit" << endl << "1 - Fill Bucket A" << endl;
cout << "2 - Empty Bucket A" << endl << "3 - Pour A into B" << endl;
cout << "4 - Fill Bucket B" << endl << "5 - Empty Bucket B" << endl;
cout << "6 - Pour B into A" << endl << "7 - Print" << endl;
cout << "8 - Solve Die Hard Puzzle" << endl;

cin >> x;

while (x != 0){
    switch (x){
    case 0:{
               return 0;
    }
    case 1:{
               A1.Fill();
               A1.Print();
               cin >> x;
               break;
    }
    case 2:{
               A1.Empty();
               A1.Print();
               cin >> x;
               break;
    }
    case 3:{
               A1.Pour(A2);
               A1.Print();
               A2.Print();
               cin >> x;
               break;
    }
    case 4:{
               A2.Fill();
               A2.Print();
               cin >> x;
               break;
    }
    case 5:{
               A2.Empty();
               A2.Print();
               cin >> x;
               break;
    }
    case 6:{
               A2.Pour(A2);
               A1.Print();
               A2.Print();
               cin >> x;
               break;
    }
    case 7:{
               A1.Print();
               A2.Print();
    }
    case 8:{
               A2.Fill();
               A2.Pour(A1);
               A2.Fill();
               A2.Pour(A1);
               A2.Print();
    }
    default:{
                cout << "Invailid Input." << endl;
                cin >> x;
                break;
    }
    }
}
return 0;
    } 

Программа выводит неправильное содержимое для заливаемого ведра, выводя 0 вместо действительного числа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...