В этом коде используется два класса. Первая - это классовая лампа, которая переключает свое состояние между включением, выключением и сломанной. Последний - это переключатель класса, который использует класс, lamp , как одно из его поля.
Цель кода - создать лампу и переключатель. Переключатель изменяет состояние лампы, но после ряда изменений состояния лампа нарушилась. Почему это происходит, и как я могу исправить его на будущее? < /P>
#include
using namespace std;
// Class lamp that switches its state between on, off and broken
class Lamp {
public:
int lampState{};
int breakPoint;
int counter{};
Lamp(const int& breakPoint) {
this->breakPoint = breakPoint;
}
string state() {
switch(lampState) {
case 1:
return "on";
break;
case 0:
return "off";
break;
default:
return "broken";
}
}
void click() {
if(counter == breakPoint) {
lampState = -1;
}else if(lampState == 0) {
lampState = 1;
counter++;
}else if(lampState == 1) {
lampState = 0;
conter++;
}
}
};
// Class switch that pushes the switch to actually switch the state of the lamp
class Switch {
public:
bool is_push{false};
Lamp* lamp;
Switch(Lamp* lamp) {
this->lamp = lamp;
}
void push() {
lamp->click();
if (is_push == false) {
is_push = true;
}else {
is_push = false;
}
}
~Switch() {
delete lamp;
}
};
int main() {
int numberClick{};
cout > numberClick; cin.ignore();
numberClick--;
Lamp* lamp = new Lamp{numberClick};
Switch* switch0 = new Switch{lamp};
Switch* switch1 = new Switch(lamp
bool ticket{true};
int numSwitch{};
while(ticket) {
cout > numSwitch; cin.ignore();
if(numSwitch== -1 ) {
break;
} else if (numSwitch == 0) {
Switch0->push();
cout state() push
cout state()
Подробнее здесь: https://stackoverflow.com/questions/726 ... ond-object