170 похожих чатов

Ситуация такая . Есть станок и он делает деньги, ему

нельзя никак останавливаться, и у него на всякий случай есть резервный мотор. И вот первый мотор приказал долго жить и заклинил. Мотор1 и Мотор2 являются членами станка. Но если сам станок то знает, что у него есть эти два мотора, то (если я не ошибаюсь) каждый мотор имеет доступ только к this самого себя любимого ( то есть мотор1 не может просто так взять и залезть внутрь мотора2). И вот вопрос, как в методе мотора1 запустить соседний Мотор2? Оба находятся в одном станке. Станок запустили и по умолчанию включился первый мотор, если он клинанул, надо чтоб первый мотор сразу запустил второй мотор.
struct Motor
{
bool is_working = false;
// если этот мотор заклинило и надо запустить резервный второй мотор,
// то как к нему можно обратиться из метода start() заклинившего мотора?
void start() { if ( !is_working ) // как тут запустить второй мотор? }

};

struct Stanok
{
Motor motor1;
Motor motor2;

void run_stanok() { motor1.start(); }
};


int main()
{
Stanok stanok;

stanok.run_stanok();

return 0;
}

10 ответов

15 просмотров

почему бы в самом станке не прописать переключение мотора? по факту моторы сами по себе не будут знать о наличии друг друга

поломка мотора1 должна приводить не к запуску мотора2, а к событию "мотор1 сломался", на основании которого управляющий модуль, знающий обо всех моторах, принимает решение о запуске мотора2 так называемая шина событий

хранить состояние мотора в станке, если мотор говорит что он устал, станок включает второй

The Pressbraker
поннял

Если один мотор включает другой, то нарушается первый принцип из SOLID (если не путаю).

The Pressbraker
поннял

можно условный shared_ptr сделать, и передать его в оба мотора. Тогда первый мотор сможет передать свое состояние сразу второму, но это если ими обоими владеет станок (создаёт)

d7d1cd
Если один мотор включает другой, то нарушается пер...

https://hsto.org/r/w1560/getpro/habr/post_images/07b/979/ed5/07b979ed5db74fcec05254aadb60220d.png

Alexey Petrunyaka
https://hsto.org/r/w1560/getpro/habr/post_images/0...

Это наглядное объяснение single responsibility?

d7d1cd
Это наглядное объяснение single responsibility?

Это картинка из статьи https://habr.com/ru/articles/454290/ про SRP как раз

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта