在C++状态机中实现事件条件

3
我正在为嵌入式C ++应用程序接口使用分层FSM。我想使用小函数来确定是否可以触发某些状态间事件,并将它们用于影响数据库中的更改。但是,为每个状态创建具有不同事件功能的新类很困难,以及将它们设置为回调的指针(我们正在谈论这里的300个函数)。如果C ++支持lambda函数,我会使用它们,但我对项目架构没有太多的权重,因此不愿使用需要重度库集成(如boost)或包含额外预处理步骤的第三方解决方案。有什么建议吗?

相关:https://dev59.com/L3I-5IYBdhLWcg3w1sXi - jldupont
3个回答

2

我不太愿意使用Boost,因为它似乎是一个庞大的库,需要在系统中进行大量的集成。 - zaratustra

0

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


0
新的C++0x标准即将完成和通过。它应该在明年推出时成为C++09。这个标准将直接包括Lambda函数,并淘汰类似boost库的需要。Visual Studio 2010技术预览版中的C++编译器已经根据Visual C++团队博客支持Lambda函数。

另外,您可以创建Lua绑定来处理您的逻辑,并使用表格来处理FSM,如此wiki中所示。这是一种非常灵活的解决方案,可以允许调整FSM而无需重新编译C ++项目。此外,Lambda函数(以及closures)在Lua下是本地且稳定的。值得探究的还有Lua协同程序,以简化FSM实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接