MFCでグローバル変数を定義する方法は?

MFCでは、次の 2 つの方法でグローバル変数を定義できます。

  1. ネイティブアプリケーション
  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;
  1. 静的変数を使用する:静的変数は適当な場所に宣言と定義ができ、静的メンバ関数を通してアクセスすることができる。例えば:
// SomeClass.h
class CSomeClass
{
public:
    static CString m_globalString;
};

// SomeClass.cpp
CString CSomeClass::m_globalString = "Hello World";

他の場所では、次の方法でグローバル変数にアクセスできます。

CString str = CSomeClass::m_globalString;

MFC アプリケーション設計時は、グローバル変数を多用しないよう留意する必要があります。理由は、保守性とテスト可能性の低下を招くおそれがあるからです。

bannerAds