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 ответов

4 просмотра

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

поломка мотора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 как раз

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

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

у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
4
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
2
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
1
читать файл максимально быстро? странный вопрос))
zamtmn
50
why html and css is not standard? i mean why different browser has their own engine and styles and how them work to show result to end user?
Mr Thieves
11
Господа, как быстро вставлять множество постов через wp_insert_post? использую wp_defer_term_counting wp_defer_comment_counting SET autocommit = 0 pre_wp_unique_post_slug но ...
Александр
4
TCodePointer = record cp: CodePointer; name: string; cnt: Integer; next: TCodePointerArray; // этот тип ещё неизвестен end; TCodePointerArray = array of ...
notme
9
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Please any new resources to learn flutter?
Gbonafha Ayehnor
8
Карта сайта