namespaceに別名をつける

C++の名前空間は別名を付ける事が出来ます。

例えば以下のように複雑な階層構造をもつクラスがあるとします。

namespace Win32
{
    namespace Network
    {
        namespace Http
        {
            class Connection
            { };
        }
    }
}


Win32::Network::Http内のConnectionクラスを使うのに長々とタイプしたくない場合は以下のように定義します。

namespace MyHttp = Win32::Network::Http;

この宣言以後はMyHttp::Connectionと書くだけでクラスにアクセス出来ます。個人的に何でもusing namepaceして汚染していくよりは良いと考えています。

注意点として、別名をむやみに使用することは複雑さを増すだけです。また、別名をヘッダに定義しないようにしてください。

私はこれを有効に使っている例を見たことがないのが残念です。

Leave a Reply

2 Comments on "namespaceに別名をつける"

Notify of
avatar
Sort by:   newest | oldest | most voted
yasutomo57jp
Guest

今まで使っていた名前空間を別のものに置き換える時の移行期間には有効かもしれませんね.

konuma
Guest

コメントありがとうございます。
名前空間の移行という作業どころか、namespaceの効果的な利用に立ち会ったことがありません。ですので、正直ピンときてませんがもう少し考えてみます。
定義はヘッダに書くと大混乱しますので、自分のコードで手を抜く為にしか、使えないと思っているんです。
namespace My {
namespace Http = Win32::Network::Http;
}
としてMy::Httpとすれば少しはマシになりますが、「読む方」からすれば定義が増えるのは煩雑以外の何者でもなく、難しいところです。
# コードは他人が読みやすく書く、が持論です。

wpDiscuz