私はC ++に比較的慣れていないため、このことに対する答えをよく探しましたが、満足のいく答えは得られませんでした.
という構造があるとしましょうFSM。最終的に私のコードでは、 の複数のインスタンスをFSM作成できます。FSMの属性の1 つはint X静的ではありません。 のすべてのインスタンスは、FSMに対して独自の値を持つ必要がありますX。
さて、FSMの属性の1 つは、次のようsubmachineに の値を読み取る必要がある別の構造です。X
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
これにより、次のエラーが発生します。
エラー: 'FSM::getX': 非静的メンバー関数の不正な呼び出し
私の質問は、submachineのメンバーなFSMので、のすべての属性のローカルインスタンスにアクセスできるべきではないFSMですか? そうでない場合、 のインスタンスを作成するときに、FSMそのすべてのメンバーのインスタンスを作成することになるのではないでしょうsubmachineか? もしそうなら、なぜ必要なオブジェクトを作成するonentry()必要があるのでしょうか?
私はコンパイラが正しいと仮定しているので、これを機能させる方法があるかどうかも知りたいです.
注: 残念ながら、内部構造 ( submachine) のインスタンスは、イベントが呼び出されたときにインスタンス化されるため、タイプを定義することしかできず、 でそれらのオブジェクトをインスタンス化することはできませんFSM。