尽管已经搜索过,但我完全不知道这是否可行。

如何防止图书馆用户在其代码的任何地方写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/

10-13 04:06