class AnimationFramework
{
protected:
static AnimationFramework *instance;
public:
static void setInstance(AnimationFramework * framework);
static void renderSceneWrap(void);
static void normalKeysWrap(unsigned char key, int x, int y);
void startFramework(int argc, char *argv[]);
virtual void renderScene(void);
virtual void normalKeys(unsigned char key, int x, int y);
virtual void setupRC();
};
void AnimationFramework::setInstance(AnimationFramework * framework)
{
instance=framework;//힙메모리에 있는 주소로 가르키게함
}
AnimationFramework *AnimationFramework::instance = NULL;//초기화(static은 미리 실행됨)
int main(int argc, char *argv[])
{
AnimationFramework *f = new AnimationFramework();
f->setInstance(f);
f->startFramework(argc, argv);//어떠한 코드가 수행됨(OpenGL)
return 0;
}
AnimationFramework *f = new AnimationFramework();
f->setInstance(f);
여기서 디폴드 생성자로 f에 힙메모리 할당하고
setInstance에서 힙메모리에 있는 메모리주소를
static AnimationFramework *instance; 에 가르키게 합니다.
왜 이렇게 하는 건지 잘모르겠네요. 답변좀 ..
두산베어스 이혜천!
저도 요새 C++ 을 봐서 잘은 모르겠는데 최근데 싱글톤 클래스 구현하면서 생성자 딜레이땜에 저거 비슷한 문법썼던거같은데 기달려보셈 고수가 오겠죠
인스턴스를 스태틱에도 만들어둬서 다른 클래스에서도 쓸 수 있게 하려는 거 아닐까
클래스 인스턴스 생성 -> 스태틱 스코프에 등록 -> 인스턴스가 존재하는 한 전역적으로 사용가능
그냥 static에 생성해버리면 딜레이 비슷한 문제 있는거 같기도 하고