MFCでグローバル変数を定義する方法は?
MFCでは、次の 2 つの方法でグローバル変数を定義できます。
- ネイティブアプリケーション
- CWinApp
// MyApp.h
class CMyApp : public CWinApp
{
public:
CMyApp();
// 声明全局变量
CString m_globalString;
};
// MyApp.cpp
CMyApp::CMyApp()
{
// 初始化全局变量
m_globalString = "Hello World";
}
そして、他のどこからでも、以下の方法でグローバル変数へアクセスします。
CString str = ((CMyApp*)AfxGetApp())->m_globalString;
- 静的変数を使用する:静的変数は適当な場所に宣言と定義ができ、静的メンバ関数を通してアクセスすることができる。例えば:
// SomeClass.h
class CSomeClass
{
public:
static CString m_globalString;
};
// SomeClass.cpp
CString CSomeClass::m_globalString = "Hello World";
他の場所では、次の方法でグローバル変数にアクセスできます。
CString str = CSomeClass::m_globalString;
MFC アプリケーション設計時は、グローバル変数を多用しないよう留意する必要があります。理由は、保守性とテスト可能性の低下を招くおそれがあるからです。