我知道,当我创建可怕的钻石
struct Base { void foo() { } };
struct A: Base { };
struct B: Base { };
struct AB: A, B { };
内存表示为
Base Base
| |
A B
\ /
AB
因此调用AB ab; ab.foo();
会引起歧义问题。但是当我从一个分支中隐藏foo
struct Base { void foo() { } };
struct A: Base { private: using Base::foo; };
struct B: Base { };
struct AB: A, B { };
ab
中应该只有一个可访问 foo,但是仍然存在歧义。我想念什么?