状態を変更したことを知る最も簡単な方法は、前の状態のデストラクタに入ってから、新しい状態のコンストラクタに入ることです。
#include <boost/statechart/state_machine.hpp>
#include <boost/statechart/simple_state.hpp>
#include <iostream>
namespace sc = boost::statechart;
struct Greeting;
struct Machine : sc::state_machine< Machine, S1> {};
struct S1 : sc::simple_state<S1, Machine>
{
S1()
{ // entry
std::cout << "Enter S1\n";
}
~S1()
{ // exit
std::cout << "Exit S1\n";
}
};
int main()
{
Machine myMachine;
myMachine.initiate();
return 0;
}
Demo
/アクションは / のペアによって実装されboost.statechart
ます。これは、状態インスタンスは、状態がマシンの現在の状態である間のみ有効であるためです。onEntry
onExit
constructor
destructor
したがって、記録、登録、状態変化 (入口または出口) のログ記録はすべて、これらの特別な関数内で行うことができます。