虽然我已经搜索过了,但我根本不知道这是否可能。
如何防止库用户在他/她的代码中的任何地方编写 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;
这将有助于解决命名空间冲突。
最佳答案
你不能。该标准规定可以编写 using namespace myns;
来获取所有名称,对此您无能为力。
如果用户在 using namespace XXX;
后发生冲突,那是他们自己的错。一般来说,如果有人试图搬起石头砸自己的脚,那是不可能阻止他们的。
最后,从某个第三方 namespace 中提取所有名称并不是偶然发生的事情,而是自古以来就一直不鼓励这样做。如果用户决定无论如何都要这样做,他们最好知道自己在做什么。确实不是库维护者的问题。
关于c++ - 防止第三方使用我的整个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37901066/