Этот файл C++ ...Почему пространство имен не используется для использования при использовании директивы пространства имен?
namespace foo {
class C {
void m();
};
void f();
}
using namespace foo;
void C::m() {}
void f() {}
..Compiles в объектный файл с этими символами:
$ g++ foo.cpp -c
$ nm foo.o -C
000000000000000a T f()
0000000000000000 T foo::C::m()
Почему C::m()?
получить пространство имен предваряться, но не f()
?
(I I вместо using namespace foo
использование namespace foo {...}
, тогда оба названия имеют foo
доп.).
Как показывает ответ, не спешите делать выводы при написании вопросов. Если что-то удивительно, лучше быть осторожным в том, как вы приближаетесь к кажущемуся противоречию и спрашиваете что-то вроде «Различия в связях»? вместо того, чтобы предполагать, что это происходит (поскольку связь не имеет ничего общего с вашей ситуацией, все задействованные связи являются внешними). –
@KerrekSB Я обновил заголовок, чтобы не делать предположений о причине. (Слишком часто я смешиваю связь, объем и распределение памяти при работе с C++). –
Очень ценим! –