C++ 尝试使用非确定性有限状态机(C+;+;),静态std::map是一个好主意吗?

C++ 尝试使用非确定性有限状态机(C+;+;),静态std::map是一个好主意吗?,c++,fsm,non-deterministic,C++,Fsm,Non Deterministic,我需要实现一个非确定性的FSM,因此我想到了定义一个FSM类的想法,该类为每个对象保存状态和转换(可能取决于也可能不取决于其他FSM的状态,但必须取决于事件/输入),并向每个FSM在构造时注册的类添加一个静态std::map。这样,在事件/输入上,每个FSM可以在需要时查找其他FSM的状态,并相应地进行操作,而无需将所有FSM组合成一个巨大的确定性FSM 这适用于一个NFSM,这是我现在所需要的全部,但如果需要更多,可以扩展吗?这个设计有什么根本性的错误吗?我对静态部分很不确定-地图似乎是个好主

我需要实现一个非确定性的FSM,因此我想到了定义一个FSM类的想法,该类为每个对象保存状态和转换(可能取决于也可能不取决于其他FSM的状态,但必须取决于事件/输入),并向每个FSM在构造时注册的类添加一个静态std::map。这样,在事件/输入上,每个FSM可以在需要时查找其他FSM的状态,并相应地进行操作,而无需将所有FSM组合成一个巨大的确定性FSM


这适用于一个NFSM,这是我现在所需要的全部,但如果需要更多,可以扩展吗?这个设计有什么根本性的错误吗?

我对静态部分很不确定-地图似乎是个好主意。创建一个名称空间对象来保存所有相关FSM(即相互交互的FSM)的映射似乎更合理,因为可以合理地假设您可能需要不同的机器集,这些机器集可以在许多上下文中独立运行(具有线程安全性)


静态映射是一个通常被理解为具有不良代码气味的单例的示例。

为什么它是静态的而不是实例变量?如果我创建了两个FSM对象,这不意味着我有两个独立的状态机吗?另一个类NFSM如何,它有一个FSM列表和映射?它也会起作用。。。