동일한 var 이름 ('aa')과 두 번째 구조 ('CCC')가 포함 된 두 개의 구조체 ('AAA'와 'BBB')는 다중 상속을 통해 모두 정의됩니다. [두 구조는 서로 관련이 없으므로 두 클래스가 공통 조상을 가지고있을 때 유명한 다이아몬드 문제가 아닙니다.] 파생 된 구조체 'CCC'에 대해 파생 된 구조체 'AAA'에서 var와 함께 작동하도록 명시 적으로 시도했지만 gcc는 여전히 모호한 def에 대해 불평합니다. 왜?gcc의 'using'키워드
struct AAA { int aa; };
struct BBB { int aa; };
struct CCC : public AAA , public BBB { using AAA::aa; };
int main() { CCC ccc; return ccc.aa; }
는 제공 : AA이 그 범위에 이미 있기 때문에
x.cpp: In function 'int main()':
x.cpp:4:34: error: request for member 'aa' is ambiguous
x.cpp:2:18: error: candidates are: int BBB::aa
x.cpp:1:18: error: int AAA::aa
저는 개인적으로 _ 충돌하지 않는 이름을 사용하고 있습니다. 또는,이 경우 약간 재미있어 보이지만 범위가 명확한 범위 분석 연산자를 사용하십시오 :'ccc.AAA :: aa'. – Damon