私は次のコードを持っている:それは上にある場合パターンの名前/よく書かれていますか?
bool CMyDoc::Suspender::m_suspending = false;
チェック:
ドクヘッダファイル
class CMyDoc
{
public:
class Suspender
{
friend class CMyDoc;
static bool m_suspending;
inline static const bool IsSuspending() { return m_suspending; }
public:
Suspender()
{
m_suspending = true;
}
~Suspender()
{
m_suspending = false;
}
};
}
ドク・ソース・ファイル
static変数の初期化を"許可されていない"状態を行うことができます。もしそうなら、それをしない:私は「許されない」状態
がSuspender
型の変数を宣言上のいくつかのコードを実行したい
void CMyDoc::SomeMethod()
{
if (!Suspender::IsSuspending())
DoThings();
}
どこか自動的に宣言に「許可されていない状態」が設定されます。しかし、最大のメリットは、変数がデストラクタs
を通過するときにスタックフレームが終了したときに "許可"状態に戻ることです。
void CMyView::DoSomething()
{
CMyDoc::Suspender s;
((CMyDoc*) GetDocument())->SomeMethod();
}
質問:
- パターンの名前は何ですか?
- 私は最も正しい方法でそれをやっていますか?静的変数を持つことを避けることはできますか?
これは[コードに適しであろうレビュー](http://codereview.stackexchange.com/)。 – Quentin
RAIIの使用です。 – Jarod42