2012-08-31 19 views
0

我有一個std::string對象已經在程序的視圖類中聲明。如何在mfc應用程序的開始初始化一個變量

//puzzleView.h 
public: 
    std::string currentState; // stores the current state of the blocks 

我想就在執行的開始初始化爲一個特定的值。但我在哪裏放置初始化?

+1

在構造函數中執行 – Jeeva

+0

「執行開始」是什麼意思?在視圖的構造函數中分配值是否爲您的目的發生得太晚? –

回答

1

取決於你認爲什麼是「開始執行」。如果您將此字符串聲明爲主視圖的數據成員,則應在視圖類構造函數中初始化它 - 在CPuzzleView::CPuzzleView()函數體(我認爲您的視圖類名稱爲CPuzzleView)。這是最常見的情況:

// #1 Using initialization list 
CPuzzleView::CPuzzleView(): currentState("No state") 
{ 
} 

// #2 Using assignment in ctor body. Also valid, but case #1 is preferable 
CPuzzleView::CPuzzleView() 
{ 
    currentState = "No state"; 
} 

如果你需要它來進行初始化啓動main()功能之前,你應宣佈它static,在任何.cpp文件的全球範圍內,例如初始化puzzleView.cpp。但是,不要以爲你真的需要這樣的教育目的(?)任務。

也想提一提,這將是更一致的使用MFC CString類,而不是std::string在MFC/ATL應用程序 - 不要混合使用不同的字符串類型,避免不必要的轉換。

+0

感謝您的詳細解釋,爲了我的目的,我將在構造函數的初始化列表中初始化它。 – Ghost

+0

我同意CString上的@Rost,而不是MFC應用程序中的std :: string。我還建議將枚舉用於「狀態」,而不是字符串和字符串比較。 – Ajay

0

您必須初始化.cpp文件中的字符串。