내가 C++ 컴파일러는 이것을 받아 들일 수 없습니다 이유에 혼란 스러워요 : : : 내가 줄을 원하는왜 C++ 컴파일러는 상속 된 공개 메소드와 상속 된 private 메소드가 동일한 이름으로 불분명하지 않을까요?
request for member ‘Baz’ is ambiguous
candidates are: void Bar::Baz()
void Foo::Baz()
그러나 그것은 명확하지 않다 :
class Foo {
private: void Baz() { }
};
class Bar {
public: void Baz() {
};
class FooBar : public Foo, public Bar { };
void main() {
FooBar fb;
fb.Baz();
}
오류 GCC주는 것은 Foo :: Baz()는 비공개이므로 Baz(). 왜 컴파일러가 여기에서 모호하지 않습니까?
고의적입니다. 컴파일러를 더 간단하게 만드는 것은 아니지만 액세스가 추가 단계로 확인되어야하기 때문에 약간 더 복잡합니다. – curiousguy