我的应用程序让我调用了一堆回调,这些回调需要知道它们的最后状态或最后调用的状态。一个简单的例子是两次连续调用之间的时间差。
我知道 C++ 中的函数对象是一种通用的方法。但我是一个 nOOb,不知道如何设置这个模式。任何帮助或特定的简单代码示例将不胜感激。
只需创建一个实现 operator() 的类。例如,
class F {
int state;
public:
int operator()(/*any parameters would go here*/){
return state++;
}
F() : state(0) {}
};
然后,您可以创建可调用并保留状态的实例。
F f;
f(); //returns 0
f(); //returns 1
如果你想要一个好的状态框架而不是使用 FSM。很少有像这样的流行:
http://boost-extension.redshoelace.com/docs/boost/fsm/doc/reference.html
和
http://www.boost.org/doc/libs/1_51_0/libs/msm/doc/HTML/index.html
它对新手来说有点复杂,但你会学到很多东西。您甚至可以实现自己的虚拟版本(没那么复杂)。
Fsms 在嵌入式世界中非常有用,在示例类中可以有 20 个状态。