Цель состоит в том, чтобы изменить поведение в цикле событий, в зависимости от того, включен или выключен флажок. Самый простой способ, о котором я могу думать, это просто проверить состояние флажка каждый раз, когда цикл запущен.
// if-statement
void action() { /* ... */ }
void someLoop() {
if (checkboxTrue) {
action();
}
// ... other stuff
}
Будет ли код более эффективным и чистым или каким-либо другим способом лучше, если бы использовался указатель функции? Вот так:
// function pointer
void action() { /* ... */ }
void empty() {}
void (*actionPtr)();
void checkboxChanged(int val) {
if (val == 1)
actionPtr = &realAction;
else
actionPtr = ∅
}
void someLoop() {
(*actionPtr)();
// ... other stuff
}