2012-04-13 18 views
-1

これはC++で内部クラスをtypedefする正しい方法ですか?ネストされたクラスのtypedef

class Foo 
{ 
public: 
    struct A 
    { 
     typedef bool Type; 
    }; 

    struct B 
    { 
     typedef int Type; 
    }; 

    typedef struct Foo::nested; 
}; 

コードは、Visual Studio 2008の下でコンパイルするが、私はそれが実際に入れ子になったクラスのtypedefであるかどうかわからないんだけど、または標準がそれを許可するかどうか。

+4

いいえ、これはコンパイルされません。投稿した内容を確認してください。 – Mat

+6

それはどういう意味ですか? –

+0

'int'や 'bool'型に別の名前を付ける理由が不思議です。 – mydogisbox

答えて

1

あなたが何を後にしているか分かりません。既存のネストされた構造の1つをtypedefをしたい場合は、試してみてください。

typedef struct Foo::A nested; 

ほとんどの場合、あなたは、この場合にはFoo構造体の外のtypedefを配置したい - あなたはすでに内からAにアクセスすることができます。

あなたは別の構造体のネストされたタイプのFoo内部のtypedefを作成したい場合は、あなたがこれを行うことができますが:

typedef struct Bar::nested myNested; 

その後、あなたはFooのように参照することができます::だけでなく、外部からのmyNested、などあなたがtypedefを宣言していれば長い間。

+0

可能であれば、クラスのすべてのメソッドにtypedefを持てるように、与えられたクラスの内部クラスのtypedefを作成しようとしています。 – Olumide

+0

メンバ関数をtypedefできません。それ以外に、私が書いたことは、あなたが必要と言うことを正確に行います。あなたは 'typedef Foo :: A :: Type AType;'と書くこともできます。もしそれが必要ならば – Attila

+0

ありがとうございます。私はメンバ関数ではなくメンバ関数へのポインタを意味していました。私はマップ内のすべての内部クラスを収集し、それらを取得するためにキーを使用する頭脳的な考えを持っていた。 – Olumide

関連する問題