Вся точка пространства имен побеждена, когда вы говорите "using namespace
".
Так что убери это и используй пространства имен. Если вы хотите использовать директиву using, поместите ее в main:
int main()
{
using myCustomizations::OneMoreClass;
// OneMoreClass unambiguously refers
// to the myCustomizations variant
}
Понять, что делают директивы using
. Что у вас есть по сути это:
namespace foo
{
struct baz{};
}
namespace bar
{
struct baz{};
}
using namespace foo; // take *everything* in foo and make it usable in this scope
using bar::baz; // take baz from bar and make it usable in this scope
int main()
{
baz x; // no baz in this scope, check global... oh crap!
}
Один или другой будет работать, а также помещать один в область действия для main
. Если вы находите пространство имен действительно утомительным для ввода, сделайте псевдоним:
namespace ez = manthisisacrappilynamednamespace;
ez::...
Но никогда не использовать using namespace
в заголовке и, вероятно, никогда в глобальной области видимости. Это хорошо в местных масштабах.