2009-04-21 5 views
0

이 정의되지 않은 참조를 사라지게 만들 수 없습니다.정의되지 않은 참조? 내가 보지 못하는 것이 있습니까? (C++, 싱글 톤 클래스)

static Scene * scene_; 

장면의 헤더의 첫 부분에서 #INCLUDE "Scene.h가"있다 :

(screenshot of issue)

나는 Scene.h의 개인 섹션에서이 코드가 있습니다. cpp

이것은 현재 내가받은 어떤 오류입니까?

원하는 정보를 제공해 드리겠습니다. 단지 (컴파일러에게,

// a.h 
class A 
{ 
    static int x; 
}; 

// a.cpp 
int A::x = 0; 

메모리를 예약하지 않습니다 클래스 변수의 선언 : 당신이 정적 멤버를 선언 할 때

+0

죄송합니다. 독서가 약간 어려웠습니다. 내 대답을 삭제했습니다. –

답변

7

당신은 또한 하나 개의 컴파일 단위 (단 하나)에 정의해야합니다 다른 컴파일 단위에서) 어딘가에 정의 된 이름으로 액세스 할 수있는 변수가있을 것입니다.

1

Scene 대신 Scene*을 사용해야하는 이유는 무엇입니까? 당신은 본질적으로 "Scene에 대한 포인터를위한 충분한 공간을 할당하기 위해 static을 사용하십시오."그리고 나서 Scene 오브젝트를 new과 함께 힙에 넣습니다 (그리고 나는 결코 delete이라고 생각합니다).

대신, 단지 정적 을 할당하고에게 Scene 개체 초기화가 있습니다. (->이됩니다)

static Scene scene_; 

을하고 그에 따라 장면에 대한 모든 참조를 변경 :

scene_.addObject(&object); 

이것은 쉽게 부팅하는 데 필요한 키 입력이 줄어 듭니다. C++에서는 Java 나 C#처럼 자주 new을 요구하지 않습니다.