1

私は、サードパーティのライブラリが現在存在しない機能やユーティリティを使用できる状況に陥ることがよくあります。これらのコンパニオン ユーティリティを作成する際に、それらをどの名前空間に配置するかという問題が生じます。

私は自分自身の中でサードパーティの名前空間をシャドーイングするための慣習を選びましたが、望ましくない影響が潜んでいないと完全に確信していません.

ユーティリティ ヘッダーの例:

#include <third_party/Thing.hpp>

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

問題は、これを行うことで重大な悪影響があるかどうかです。

4

1 に答える 1

0

特に問題はありませんが、あいまいさや肥大化の場合に備えて、サードパーティの名前空間で名前空間を汚染しないように注意してください。名前空間をネストすることをお勧めします。C++ 名前空間のアドバイス、 C++ のネストされた名前空間、およびここc++ での名前空間の使用法

一般的には安全である必要があり、using namespace third_party使用を cpp ファイルのみに制限します。そうしないと、ヘッダーで宣言using namespace third_partyした場合、ヘッダーのコードが#includeサードパーティの名前空間を誤って取得してしまいます。

于 2012-04-11T22:22:57.740 に答える