私はC++コンパイラは、この受け付けない理由として困惑している:GCCが与える誤差があるなぜC++コンパイラは、継承されたパブリックメソッドと継承された同じ名前のプライベートメソッドのあいだを曖昧にしませんか?
class Foo {
private: void Baz() { }
};
class Bar {
public: void Baz() {
};
class FooBar : public Foo, public Bar { };
void main() {
FooBar fb;
fb.Baz();
}
を:
request for member ‘Baz’ is ambiguous
candidates are: void Bar::Baz()
void Foo::Baz()
が、それは私がバーを望んでいることは明らかではありません:: Foo :: Baz()はプライベートなので、Baz()なぜコンパイラはここで曖昧さを感じませんか?
これは意図的です。これは、コンパイラをより簡単にするものではありません。反対に、アクセスは追加ステップとしてチェックする必要があるため、非常にやや複雑です。 – curiousguy