儘管我搜索了,但我不知道這是否可能。防止第三方使用我的整個命名空間
如何防止圖書館用戶在他/她的代碼中的任何地方編寫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 ::',不管使用'namespace'聲明。 – TerraPass
爲了舉例,我寫了'string'。關鍵是我想阻止他使用「命名空間」。 –