2012-06-13 12 views
0

我有一個結構,其中包含三個列表和一個整數,可以在下面的代碼中看到。使用C++初始化一個結構中的容器對象列表?

struct MainScreenState 
{ 
    std::list<char*> sessionId; 
    std::list<char*> opposingUser; 
    std::list<char*> currentMove; 
    int totalScore; 
    MainScreenState() { 
     totalScore = 0; 
    } 
}; 
struct MainScreenState *state; 

初始化一個int可能使用一個構造函數,但你如何初始化列表中的對象,使您避免編譯器警告「警告C4700:未初始化的局部變量‘狀態’」。

+0

擺脫所有這些指針,它們在C++中幾乎沒有位置。 'char *'=>'std :: string'。無論如何,「狀態」不需要是指針。 –

回答

2

std::list成員自動初始化。問題在於未初始化的變量state

MainScreenState *state = NULL; //struct keyword not necessary in C++ 

或(每個請求)

MainScreenState *state = new MainScreenState; 

或傾向於使用自動存儲變量或一個智能指針。

+0

Plx no NULL,plx – mfontanini

+0

@mfontanini NULL是一個有效的初始化... –

+0

我並不是說你應該分配一個MainScreenState。我剛剛提到過,因爲我通常更喜歡0(或nullptr)而不是NULL,但是,你應該使用你喜歡的:D。 – mfontanini