У меня небольшая проблема с дизайном:
У меня есть класс, описывающий робота;Он может перемещаться в разные стороны, перемещать камеру в разные виды и т. Д. Это выглядит примерно так:
class Robot {
private:
...
public:
void move_right();
void move_left();
void switch_camera()
void raise_camera()
}
Я хочу добавить еще один метод, который выполняет серию событий.Дело в том, что мне нужно прервать события на полпути.
Я хочу уточнить, что робот работает на микроконтроллере, а не на стандартной ОС - поэтому я не могу отправить сигнал наили что-то в этом роде.
Моей первой идеей было сохранить функции событий в массиве и выполнить итерации по ним:
#typedef void(robo_event *)(void)
robo_event next_event;
robo_event *event_sequence;
Robot() {
this->next_event = nullptr;
}
void perform_event_series() {
for(this->next_event = *event_sequence; this->next_event != nullptr; this->next_event+=sizeof(robo_event)) {
this->next_event();
}
}
void abort_event_series() {
this->next_event = nullptr;
}
Дело в том, что стандарт c ++ запрещает хранить адреса функций-членов, поэтомуэто начинает становиться неловким.Я могу сделать функции статичными, но мне нужно использовать их довольно часто, и это все равно будет неудобно.Я хочу иметь возможность переходить на последовательность событий без особой работы, если изменения еще не наступили, поэтому я подумал, что лучше всего сохранить их в каком-либо массиве / векторе.
Любая помощь с членом c ++Синтаксис функции / лучшие идеи о том, как подойти к этой проблеме, будет высоко ценится.