다음 코드가 있습니다.
namespace A {
struct Foo {
int a;
};
}
struct Foo {
int b;
};
struct Bar : public A::Foo {
Bar(Foo foo) {
c = foo.b;
}
int c;
};
A :: Foo에는 b라는 멤버가 없으므로 C ++ 컴파일러는 "c = foo.b"에서 불평합니다. :: Foo로 Bar 매개 변수의 유형을 변경하면 작동합니다.
내 질문은이 동작의 합리적인 이유입니다 (상속이 Bar가 A 네임 스페이스에 들어가게한다는 사실과 관련이 있다고 생각하지만이 이론을 뒷받침하는 문서를 찾을 수는 없습니다.
A
했는지 확인할 수 있습니다 . 그런 다음 모호성이 없습니다. 그것은 상속이 모든 것을 추가 더 비슷 에 의 해상도를 포함 하는 방법에 대해 . 죄송하지만 더 정확하게 표현할 수는 없습니다. Bar
A
A::Foo
Bar
Foo
A::Foo