Tengo el siguiente código:
namespace A {
struct Foo {
int a;
};
}
struct Foo {
int b;
};
struct Bar : public A::Foo {
Bar(Foo foo) {
c = foo.b;
}
int c;
};
Los compiladores de C ++ se quejan en "c = foo.b" porque A :: Foo no tiene un miembro llamado b. Si cambio el tipo de parámetro Bar con :: Foo, funciona.
Mi pregunta es cuál es la razón detrás de este comportamiento (supongo que tiene que ver con el hecho de que la herencia hace que Bar ingrese el espacio de nombres A, pero no puedo encontrar ninguna documentación que respalde esta teoría.
A
, que puede ver si deja Bar
heredar de otra estructura A
. Entonces no hay ambigüedad. Se parece más a la herencia se suma todo, desde A::Foo
que Bar
incluyendo la resolución de Foo
a A::Foo
. Lo siento, realmente no puedo expresarlo con más precisión.