2012-06-13 2 views
0

아래 코드에서 볼 수 있듯이 세 개의 목록과 정수가 들어있는 구조체가 있습니다. 컴파일러 경고 ": 초기화되지 않은 지역 변수 '상태'경고 C4700"을 피할 수 있도록 C++을 사용하여 구조체 내의 목록 컨테이너 객체를 초기화 하시겠습니까?

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

은 INT는 생성자를 사용 가능하다 초기화하려면,하지만 당신은 어떻게 목록 개체를 초기화 않는다.

+0

모든 포인터를 제거하면 C++이 거의 없습니다. 'char *'=>'std :: string'. 'state'는 포인터 일 필요는 없습니다. –

답변

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를 할당해야한다는 의미는 아닙니다. 방금 내가 언급했듯이 NULL보다는 0 (또는 nullptr)을 선호하지만 좋은 것을 사용해야합니다. D. – mfontanini