Сбой, пытаясь удалить второй объектC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сбой, пытаясь удалить второй объект

Сообщение Anonymous »

В этом коде используется два класса. Первая - это классовая лампа, которая переключает свое состояние между включением, выключением и сломанной. Последний - это переключатель класса, который использует класс, 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»