【发布时间】:2018-03-30 13:09:38
【问题描述】:
我在一个类中实现了一个非常小的有限状态机,我最初的方法是尝试这个:
class Widget {
public:
void update(float time_interval){
current_state = current_state_(time_interval);
}
private:
std::function< ?? > off_(float);
std::function< ?? > standby_(float);
std::function< ?? > locked_(float);
std::function< ?? > current_state_; // initialised to off_
};
每个状态都是一个返回状态的函数。但是我不知道如何声明一个返回类型包括其返回类型的函数。有没有办法打破递归?
相反,我使用了 enum class 和丑陋的 switch 声明。
【问题讨论】:
-
将您的
std::function<State(float)>包装在State类中。 -
stackoverflow.com/a/29533782/1774667 解决您的问题?我猜有点矫枉过正,因为它支持返回向量。