尽管已经搜索过,但我完全不知道这是否可行。
如何防止图书馆用户在其代码的任何地方写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;
之后发生碰撞,那是他们自己的错。通常,如果人们试图阻止人们用脚射击自己,那是不可能的。
最后,从某个第三方名称空间提取所有名称并不是偶然发生的,但是自从时间临近以来就一直不鼓励这样做。如果用户决定还是这样做,那么他们会更好地知道自己在做什么。确实不是库维护者的问题。
关于c++ - 阻止第三方使用我的整个命名空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37901066/