C++相談室 part38
■ このスレッドは過去ログ倉庫に格納されています
0263デフォルトの名無しさん
NGNG何らかのタイプ設定をenumでセットするクラスがあるとすると、通常はこういう構成になると思います。
class Hoge{
public:
enum TYPE {A,B,C};
Set(TYPE type);
private:
TYPE type_;
};
Hoge hoge; hoge.Set(Hoge::A); hoge.Set(Hoge::B); hoge.Set(Hoge::C);
Setを呼び出すたびにHoge::という修飾が必要なのがわずらわしいので、
以下のように名前空間を利用できないだろうかと考えています。
なお、名前空間名は必ずクラス名をすべて大文字にしたもの、で統一するつもりです。
namespace HOGE { enum TYPE {A,B,C}; }
class Hoge{
public:
Set(HOGE::TYPE type);
private:
HOGE::TYPE type_;
};
using namespace HOGE; Hoge hoge; hoge.Set(A); hoge.Set(B); hoge.Set(C);
クラス利用者がusingディレクティブによって必要に応じて冗長な修飾を
削れるため、後者のほうが、優れた手法だと思っています。
なにか見落としている欠点などありますでしょうか?
■ このスレッドは過去ログ倉庫に格納されています