Possible Duplicate:
C++ equivalent of “super”?C++에서 기본 클래스의 이름을 모른 채 하위 클래스의 기본 클래스 멤버를 호출하는 방법은 무엇입니까?
기본 클래스의 이름을 알지 못하고 하위 클래스에서 기본 클래스 멤버 함수를 호출 할 수 있습니까? (java에서 super 키워드를 사용하는 것과 비슷한 것)
Possible Duplicate:
C++ equivalent of “super”?C++에서 기본 클래스의 이름을 모른 채 하위 클래스의 기본 클래스 멤버를 호출하는 방법은 무엇입니까?
기본 클래스의 이름을 알지 못하고 하위 클래스에서 기본 클래스 멤버 함수를 호출 할 수 있습니까? (java에서 super 키워드를 사용하는 것과 비슷한 것)
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
'__super ::'없이는 똑같은 일을하지 않겠는가? – steffen
@steffen'struct D'에 대해 하나의 상속과 다른 함수 이름 만 있으면 작동합니다. 현재의 경우,'mf'의 첫 번째 호출은 무한 재귀를 발생시킵니다. 'struct D'의 함수 이름이'mf'가 아니면 컴파일러 오류가 발생합니다 :'mf '에 대한 참조가 모호합니다. –
어떻게하지 기본 클래스의 이름을 알아? – templatetypedef
아니요, C++에는 '슈퍼'와 동일한 기능이 없습니다. 다중 상속을 지원하기 때문에 '슈퍼'는 자바와 같은 여러 클래스를 참조 할 수 있습니다. –
파생 클래스를 정의하기 위해 기본 클래스의 이름을 지정해야하므로 기본 클래스의 이름 (또는 적어도 _a_ 이름)을 알아야합니다. 그렇다면'typedef base_class_name super; '에서 여러분을 막을 수있는 방법은 없습니다. –