English 中文(简体)
在C++状态机中实现事件条件
原标题:
  • 时间:2008-12-02 17:24:25
  •  标签:

我正在为嵌入式C++应用程序接口使用分层有限状态机。我想使用小型函数来确定是否可以触发某些状态间事件,并使用它们来影响数据库中的更改:然而,为每个状态制作具有不同事件函数的新类是令人生畏的,设置指向它们的回调指针也是如此。(我们正在谈论这里的300个函数。)

如果C++支持lambda函数,我会使用它们,但我在项目架构上没有太多权重,所以我不愿意使用需要进行大量库集成(例如boost)或包含额外预处理步骤的第三方解决方案。

有什么想法吗?

问题回答

实际上,如果您使用Boost/TR1库,支持Lambda函数。 详细信息可以在Boost网站上找到。

新的C++0x标准即将结束制定和通过。明年推出时应该是C++09。这个标准将直接在语言中包含Lambda函数,并淘汰类似的boost库的需求。根据Visual C++ Team Blog的说法,Visual Studio 2010技术预览版中的C++编译器已经支持Lambda函数。

或者,您可以为逻辑创建Lua绑定,并使用表来处理FSM,如本维基中所示。 这是非常灵活的解决方案,可以允许调整FSM而无需重新编译C ++项目。同时,Lambda函数(以及闭包)在Lua下是本地和稳定的。Lua协程也值得研究,以简化FSM实现。

你看过Qt的QStateMachine吗?它可能会提供一些灵感。





相关问题
热门标签