Я не понимаю, почему компилятор 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 () является частным?Почему компилятор не устраняет неоднозначность здесь?