2012-08-31 3 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/ATL 응용 프로그램에서 std::string 대신 MFC CString 클래스를 사용하는 것이 더 일관성이 있다는 것을 언급하고자합니다. 다른 문자열 유형을 혼합하지 않고 불필요한 변환을 방지합니다.

+0

이러한 상세한 설명을 주셔서 고맙습니다. 제 목적을 위해 저는 생성자의 초기화 목록에서이를 초기화 할 것입니다. – Ghost

+0

MFC 응용 프로그램에서 std :: string 대신 @Rost for CString에 동의합니다. 또한 "문자열"과 문자열 비교보다는 "상태"에 대해 enum을 사용하는 것이 좋습니다. – Ajay

0

.cpp 파일의 문자열을 초기화해야합니다.

관련 문제