这是我的应用程序的简化设置:
class Engine {
void run(); { // main program loop
while (state != gameState::quit)
step<state>(); // ERROR
}
template<gameState>
void step() {} // empty default step function
template<>
void step<gameState::intro>() { /* do step for intro state*/ }
template<>
void step<gameState::menu>() { /* do step for menu state*/ }
gameState state;
}
我想要做的是根据状态成员中的当前值调用 step 函数。在 step() 调用中,状态不是常量表达式,这是一个问题。有没有办法编写这个依赖枚举的函数调用而不需要一些大的丑陋开关?
(这只是一个简化的例子,只有一个功能和两个状态)。