たとえば、マシンを説明するテンプレート XML ファイルを読み取るなど、boost msm を動的に使用して FSM を作成する方法はまだわかりません。問題に対処する方法はありますか?ブースト msm 1.61 でファンクター アプローチを使用したいと考えています。
一般的な方法でフロントエンドの基本クラスを作成できるように、少し進歩しました。
class SMBase : public msmf::state_machine_def<SMBase>
{
...
};
using SMBaseBackend = msm::back::state_machine<SMBase>;
class SMDerived : public SMBase
{
...
};
using SMDerivedBackend = msm::back::state_machine<SMDerived>;
class SMDerived2 : public SMBase
{
...
};
using SMDerived2Backend = msm::back::state_machine<SMDerived2>;
ただし、ステート マシン自体はバックエンドによって操作されており、実行時に後者を選択する方法はこれまでのところわかりません (たとえば、
map<int, smart_pointer<SMBaseBackend> >
)。