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; 에 가르키게 합니다.

왜 이렇게 하는 건지 잘모르겠네요. 답변좀 ..