2012-06-08 1 views
0

NeHe.gamedev.net에서 코드를 만드는 창을 가져 와서 클래스로 변환하려고합니다. 더 쉽게 사용할 수 있도록 문제가 발생합니다. WndProc 메서드는 정적으로 읽어야합니다. 물론 그 안에 사용되는 변수는 정적이어야합니다. 그러나 헤더 파일에 이와 같이 선언하면C++의 정적 클래스 멤버

private: 

static bool keys[256];     //for key events 
static bool active; 
static bool fullscreen; 

오류가 발생합니다. 외부에 선언되지 않았다는 메시지가 나타납니다. 나는 오히려 C++로 새롭기 때문에 내가 무엇을 놓치고있는가? 감사!

+0

문자 그대로 초 후에 자신의 질문에 답변되었습니다. 그러나 내가 대답을 찾은 사이트에서 인용 할 것입니다. "클래스의 멤버 목록에있는 정적 데이터 멤버의 선언은 정의가 아닙니다. 정적 멤버를 네임 스페이스 범위에서 클래스 선언 외부에 정의해야합니다 . " 기본적으로 classname :: membername = something 형식으로 .cpp 파일에 정의해야합니다. – Pat

답변

2

정적 값은 구현 파일에서도 선언해야합니다. 컴파일러는 정적 변수의 저장을 넣어 더 좋은 장소가 없습니다, 구현 파일에 어딘가에 선언하지 않고

bool MyClass::keys[256]; 
bool MyClass::active; 
bool MyClass::fullscreen; 

문제가있다 : 당신의 .cpp 파일에서 당신은 같은 것을해야한다.

+0

내가 읽은 것을 확인하는 신난다. 나는 당신을 업 그레 이드 하겠지만, 나는 할 수 없다. – Pat