2012-04-13 4 views
-1

Правильно ли это тип typedef внутреннего класса на C++?Typedef вложенного класса

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

    struct B 
    { 
     typedef int Type; 
    }; 

    typedef struct Foo::nested; 
}; 

Код компилируется под Visual Studio 2008, но я не уверен, если это действительно ЬурейеЕ вложенного класса, или допускает ли стандарт его.

+4

Нет, это не скомпилировано. Проверьте, что вы опубликовали. – Mat

+6

Что вы надеетесь, что это значит? –

+0

Мне любопытно, почему вы хотите иметь другое имя для типов 'int' или' bool'? – mydogisbox

ответ

1

Не уверен, что вы после. Если вы хотите, чтобы один из определения типа во существующих вложенных структурах, попробуйте:

typedef struct Foo::A nested; 

Скорее всего, вы хотите разместить ЬурейиЙ вне Foo структуры в этом случае - вы уже можете получить доступ к A изнутри.

Если вы хотите создать ЬурейеЕ внутри Foo для вложенного типа другой структуры, вы можете сделать это:

typedef struct Bar::nested myNested; 

Тогда вы можете обратиться к нему как Foo :: myNested снаружи, а, как пока вы объявили публику typedef.

+0

Если возможно, я пытаюсь создать typedef для внутренних классов данного класса - так же, как можно получить typedef для всех методов класса. – Olumide

+0

Вы не можете набрать функцию-член. Кроме того, то, что я написал, делает именно то, что вы говорите, что вам нужно. Вы можете написать 'typedef Foo :: A :: Type AType;', а если это то, что вы хотите – Attila

+0

Спасибо. Я имел в виду указатели на функции-члены, а не на функции-члены. У меня была мысль о том, чтобы собрать все внутренние классы на карте и использовать ключ для их извлечения. – Olumide

Смежные вопросы