私は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
。