簡體   English   中英

隱藏第三方名稱空間是否有危險?

[英]Is shadowing 3rd party namespaces dangerous?

我經常發現自己處於第三方庫可能使用某些當前不存在的功能或實用程序的情況。 在編寫那些伴隨實用程序時,出現了將它們放入哪個名稱空間的問題。

我選擇了一個約定將第3方的名稱空間隱藏在自己的約定中,但是我還沒有完全使自己確信沒有潛伏的反響。

實用程序頭示例:

#include <third_party/Thing.hpp>

namespace my_namespace
{
    namespace third_party
    {
        typedef ::third_party::Thing<int,3> Thing3i
    }
}

所以問題是: 這樣做是否有任何重大的負面后果?

我沒有特別發現任何錯誤,但是我要提醒您,如果歧義或膨脹,請不要用第三方污染您的名稱空間,對於嵌套名稱空間是否是個好主意,對於此問題有一個很好的答案: C ++名稱空間建議C ++中的 嵌套名稱空間以及此處c ++中名稱空間的用法

通常,它應該是安全的,並且我將using namespace third_party使用限制為僅cpp文件,否則,如果您要在標頭中聲明using namespace third_party ,則#include s標頭的代碼將意外獲取第三方命名空間,除非您確實希望那發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM