C++ 相談室 part5
■ このスレッドは過去ログ倉庫に格納されています
0053デフォルトの名無しさん
NGNGC 言語の時点でも nested struct や nested class は存在したから、まぁ自然な
拡張だと思うけど。
私は nested class, local class 両方とも、実際に使ってます。local class の代表
的な使い方としては、変数スコープに合わせて何かを処理するというのがありま
す。
struct MutexHolder
{
MutexHolder() { GetMutex(); }
~MutexHolder() { ReleaseMutex(); }
};
こんな感じの class/struct を関数内で定義して使うとか。もちろんグローバル
にい定義してもいいのですが、それだとグローバルな名前空間を汚してしまい
ますから。
nested class は、たとえば実装を Bridge パターンを使って隠す場合に
class Foo
{
struct Impl; // nested class
const std::auto_ptr<Impl> pImpl_;
public:
Foo();
~Foo();
// 他にメソッドいろいろ
};
と公開ヘッダで書いておいて、実装側で struct Foo::Impl を定義するとか。
別に nested class にせずに FooImpl というクラスを定義しても良いけど、
この方が関係が良く分かって良いかな、と。
Command Pattern を使う場合にも、各コマンドを操作対象のクラスの nested
class にしてます。
class TextSurface
{
public:
class SetTextCommand;
class SetFontCommand;
...
};
■ このスレッドは過去ログ倉庫に格納されています