2012-04-13 3 views
-1

C++에서 내부 클래스를 typedef로 바꾸는 올바른 방법입니까?중첩 클래스의 typedef

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

    struct B 
    { 
     typedef int Type; 
    }; 

    typedef struct Foo::nested; 
}; 

코드는 비주얼 스튜디오 2008에서 컴파일하지만 실제로 중첩 된 클래스의 타입 정의, 또는 표준에서 허용 여부 있는지 확실하지 않습니다.

+4

아니요, 컴파일되지 않습니다. 게시 한 내용을 확인하십시오. – Mat

+6

무엇을 의미할까요? –

+0

'int' 또는'bool' 타입에 왜 다른 이름을 쓰길 원하는지 궁금합니다. – mydogisbox

답변

1

당신이 뭘하고 있는지 확실하지 않습니다. 기존 중첩 된 구조 중 하나를 형식 정의를하려는 경우, 시도 :

typedef struct Foo::A nested; 

는 대부분의 경우이 경우에 Foo 구조체의 외부 형식 정의를 배치 할 - 당신은 이미 내에서 A에 액세스 할 수 있습니다. 다른 구조체의 중첩 유형 Foo 내부 타입 정의를 만들고 싶었 경우

, 당신이 할 수 있습니다 :

typedef struct Bar::nested myNested; 

이 그럼 당신은 푸로 참조 할 수

는 ::으로뿐만 아니라 외부에서 myNested typedef를 공개한지 오래입니다.

+0

가능하면 클래스의 모든 메서드에 대한 typedef를 가질 수있는 것처럼 주어진 클래스의 내부 클래스에 대한 typedef를 만들려고합니다. – Olumide

+0

멤버 함수를 typedef 할 수 없습니다. 그것 이외에, 내가 쓴 것은 정확하게 당신이 필요로하는 것을합니다. 'typedef Foo :: A :: Type AType; '이라고 쓸 수도 있습니다. 원하는 경우 그럴 수도 있습니다. – Attila

+0

감사합니다. 멤버 함수가 아니라 멤버 함수 포인터를 의미했습니다. 지도에서 모든 내부 클래스를 수집하고 키를 사용하여 가져 오는 방법을 모색했습니다. – Olumide