私はC++には比較的新しいので、私はこのことに対する答えをたくさん見てきましたが、満足のいく回答は得られませんでした。外部クラスにアクセスする内部クラス
私はFSM
という構造を持っているとしましょう。最終的に私のコードでは、FSM
の複数のインスタンスを作成することができます。 FSM
の属性のうち1つはint X
です。これは静的ではなく、FSM
のすべてのインスタンスはX
の独自の値を持つ必要があります。
は今、FSM
の属性の一つは、このようなX
の値を読み込む必要がある別の構造体submachine
です:
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
これは、次のエラーを与える:
Error: 'FSM::getX' : illegal call of non-static member function
私の質問は、submachine
はFSM
のメンバーなので、すべての属性のローカルインスタンスにはアクセスしないでください。FSM
?そうでない場合は、FSM
というインスタンスを作成すると、すべてのメンバーのインスタンス、つまりsubmachine
が作成されませんか?もしそうなら、なぜonentry()
に必要なオブジェクトを作成する必要がありますか?
私はコンパイラが正しいと仮定しているので、この作業を行う方法があるかどうかも知りたいと思うでしょう。
注:残念ながら、内部構造のインスタンス(submachine
)は、イベントが呼び出されたときにインスタンス化されるため、型の定義のみが可能で、FSM
のオブジェクトのインスタンス化はできません。
もし私が達成したいことを達成する方法があれば? – Kam
Downvoter:気にする? –
(遅れて申し訳ありませんが、リンクを見つけることができました)。ネストされたクラスはメンバーであり、他のメンバーと同様に外部クラスにアクセスできます。[DR 45](http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45)の2003年以来の標準 –