2012-07-11 3 views
2

Possible Duplicate:
C++ equivalent of “super”?C++에서 기본 클래스의 이름을 모른 채 하위 클래스의 기본 클래스 멤버를 호출하는 방법은 무엇입니까?

기본 클래스의 이름을 알지 못하고 하위 클래스에서 기본 클래스 멤버 함수를 호출 할 수 있습니까? (java에서 super 키워드를 사용하는 것과 비슷한 것)

+3

어떻게하지 기본 클래스의 이름을 알아? – templatetypedef

+0

아니요, C++에는 '슈퍼'와 동일한 기능이 없습니다. 다중 상속을 지원하기 때문에 '슈퍼'는 자바와 같은 여러 클래스를 참조 할 수 있습니다. –

+2

파생 클래스를 정의하기 위해 기본 클래스의 이름을 지정해야하므로 기본 클래스의 이름 (또는 적어도 _a_ 이름)을 알아야합니다. 그렇다면'typedef base_class_name super; '에서 여러분을 막을 수있는 방법은 없습니다. –

답변

1

C++에는 super 키워드에 해당하는 표준이 없습니다. 그러나 비주얼 스튜디오를 사용하고 있다면 같은 것을 실현한다고 생각되는 마이크로 소프트 특정 하나의 __super가 있습니다.

// deriv_super.cpp 
// compile with: /c 
struct B1 { 
    void mf(int) {} 
}; 

struct B2 { 
    void mf(short) {} 

    void mf(char) {} 
}; 

struct D : B1, B2 { 
    void mf(short) { 
     __super::mf(1); // Calls B1::mf(int) 
     __super::mf('s'); // Calls B2::mf(char) 
    } 
}; 

참조 : msdn

+0

'__super ::'없이는 똑같은 일을하지 않겠는가? – steffen

+0

@steffen'struct D'에 대해 하나의 상속과 다른 함수 이름 만 있으면 작동합니다. 현재의 경우,'mf'의 첫 번째 호출은 무한 재귀를 발생시킵니다. 'struct D'의 함수 이름이'mf'가 아니면 컴파일러 오류가 발생합니다 :'mf '에 대한 참조가 모호합니다. –