複数の継承を使用して同じvar名('aa ')と第3の構造体(' CCC ')を含む2つの構造体(' AAA 'と' BBB ' [2つの構造は無関係であると考えられているので、2つのクラスが共通の祖先を持つ場合、これは有名なダイヤモンドの問題ではありません]。 派生した構造体 'CCC'のために私は、構造体 'AAA'の派生構造体でvarを扱うように明示的に選択しようとしましたが、gccはあいまいなdefについてまだ不平を言っています。どうして?gccの 'キーワード'を使用しています
struct AAA { int aa; };
struct BBB { int aa; };
struct CCC : public AAA , public BBB { using AAA::aa; };
int main() { CCC ccc; return ccc.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
私は個人的に_really_競合しない名前を使用しています。代わりに、スコープ解決演算子を使用してください。この演算子は、このケースでは少し面白く見えますが、あなたが望むものを非常に明確に表現しています: 'ccc.AAA :: aa'。 – Damon