IMO, для этой задачи вам, вероятно, следует вложить класс «подъемной коробки» внутри класса контроллера:
class lift_controller {
class lift_box {
open_doors();
close_doors();
move_to_floor();
};
std::vector<lift_box> bank;
};
Для внешнего мира не должно быть никаких доказательств того, что lift_box
вообще существует,Он связывается исключительно с lift_controller
, и вся внешняя связь с lift_box
проходит через lift_controller
.
В этом случае (только lift_controller
имеет доступ к lift_box вообще), кажется ясным(по крайней мере для меня), что любые операции, которые lift_controller
может потребоваться вызвать на lift_box, должны быть просто сделаны открытыми функциями lift_box
.Чтобы никто другой не имел доступа к lift_box
, убедитесь, что определение lift_box
находится в разделе private:
в lift_controller
.
Редактировать: я должен добавить, что вы немного по дизайнуВы редактировали в ваш вопрос выше, имеет мало или нет смысла для меня.Например, у вас есть такие вещи, как направление и текущий уровень для банка .Если я не совсем понимаю, что вы подразумеваете под банком, это кажется мне явной ошибкой - банк не находится на определенном уровне и не движется в определенном направлении.Скорее, каждый отдельный лифт в банке находится на некотором уровне и (потенциально) движется в каком-то направлении.