0

我的应用程序让我调用了一堆回调,这些回调需要知道它们的最后状态或最后调用的状态。一个简单的例子是两次连续调用之间的时间差。

我知道 C++ 中的函数对象是一种通用的方法。但我是一个 nOOb,不知道如何设置这个模式。任何帮助或特定的简单代码示例将不胜感激。

4

2 回答 2

3

只需创建一个实现 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
于 2012-09-20T13:28:51.060 回答
0

如果你想要一个好的状态框架而不是使用 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 个状态。

于 2012-09-20T13:33:25.627 回答