2011-12-16 6 views
2

다음을 시도하고 두 로그 문 사이에 에뮬레이터 충돌이 발생합니다. 뭔가 잘못 됐니?정적 멤버 함수를 통해 C++에서 비 const 정적 멤버 변수 초기화

protected: 
    static int maxSize; 
public: 
    static void setFontSizeRange(int max) { 
     Log("here %d->%d", max, maxSize); 
     maxSize = max; 
     Log("ok"); 
    } 

I 매개 변수를 재생하기 위해 로그를 얻을 수 있지만,이 고정 부재를 출력하기 전에 충돌 (그래서 그 지칭하는 동안 작동하지 않을 위와 제 로그).

감사합니다.

+0

어느 에뮬레이터입니까? 플랫폼? 환경? –

+0

정적 멤버를 어딘가에 정의 했습니까? (정의와 선언의 차이점을 알 수 있음). – Griwes

+0

Griwes, 샘플에있는 정적 멤버에 대한 모든 참조를 볼 수 있습니다 (나중에 참조가 있지만 실행할 기회가 없습니다). @ D.Shawley, Windows 용 Bada 용 Arm 용 Eclipse입니다. – John

답변

2

정적 멤버를 정의해야합니다.

class Something 
{ 
protected: 
    static int maxSize; 
public: 
    static void setFontSizeRange(int max) { 
     Log("here %d->%d", max, maxSize); 
     maxSize = max; 
     Log("ok"); 
    } 
}; // class declaration ends here... 

int Something::maxSize = 0; 
+0

이 사람은 항상 나를 태워다줍니다. 고마워요. 이제는 '정적 const'만으로도 많은 작업이 초기화 될 수 있습니다. – John