Хотя я искал, я не знаю, возможно ли это вообще.Запретить третьему лицу использовать мое полное пространство имен
Как я могу запретить пользователю библиотеки писать using namespace myns;
в любом месте в его/ее коде?
Допустим, я реализовал библиотеку, охватывающую все его элементы в пространстве имен myns
:
namespace myns
{
class MyClass
{
};
class string
{
};
}
Эта библиотека будет использоваться другим программистом. Как я могу заставить его/ее использовать
// somewhere in code
myns::MyClass myClass;
myns::string myString;
std::string stdString;
вместо
using namespace myns;
// somewhere in code
MyClass myClass;
string myString; // this would most likely be a mess
string stdString;
это поможет с наездом пространства имен.
партии программист третьим будет вынужден указать пространство имен явно в случае неясности в любом случае. То есть ваш последний образец не будет компилироваться, если программист не добавляет 'std ::' и 'myns ::' соответственно, независимо от 'using namespace'. – TerraPass
Я написал 'string' для примера. Дело в том, что я хочу, чтобы он не использовал «пространство имен». –