我很困惑为什么C编译器不会接受这个:
class Foo { private: void Baz() { } }; class Bar { public: void Baz() { }; class FooBar : public Foo,public Bar { }; void main() { FooBar fb; fb.Baz(); }
gcc给出的错误是:
request for member ‘Baz’ is ambiguous candidates are: void Bar::Baz() void Foo::Baz()
但是我想要Bar :: Baz()并不明显,因为Foo :: Baz()是私有的吗?为什么编译器不会在这里消除歧义?