« WILD ARMSの完全版サントラ発売と新作の告知 | トップページ | クラスの配列を作る方法 »

2006年1月25日 (水)

namespaceに別名をつける

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

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

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

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

namespace MyHttp = Win32::Network::Http;

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

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

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

10:29 午後 C++ |

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/147973/8338343

この記事へのトラックバック一覧です: namespaceに別名をつける:

コメント

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

投稿: yasutomo57jp | 2009/12/26 22:35:49

コメントありがとうございます。

名前空間の移行という作業どころか、namespaceの効果的な利用に立ち会ったことがありません。ですので、正直ピンときてませんがもう少し考えてみます。

定義はヘッダに書くと大混乱しますので、自分のコードで手を抜く為にしか、使えないと思っているんです。

namespace My {
namespace Http = Win32::Network::Http;
}

としてMy::Httpとすれば少しはマシになりますが、「読む方」からすれば定義が増えるのは煩雑以外の何者でもなく、難しいところです。

# コードは他人が読みやすく書く、が持論です。

投稿: konuma | 2009/12/28 0:53:36

コメントを書く