C / C++/WIN32 / MFC

class 안에서 callback함수 사용과, callback 함수 안에서 class 멤버/함수 변수 접근하기

daniel.yoon 2008. 2. 24. 12:41
반응형

보통 class 안에서 선언된 callback함수는 접근이 안된다.
class T
{
public:
         void CALLBACK test();
}

보통 이렇게 되어 있다고 하면 접근을 하기 위해서 static을 붙여주기도 한다.
class T
{
public:
         static void CALLBACK test();
}



하지만... callback함수 안에서 다시 class 안에 있는 멈버 변수에 접근을 하지 못하게 된다.

내가 해결한 방법으로는
class 안에서 class 변수를 static으로 선언을 해주어서는 this 포인터로 접근하였다.

class T
{
private:
         static T*  m_pInstance;
public:
         void CALLBACK test();
}

생성자에서는
T::T(void)
{
        m_pInstance = this;
}

그리고 마지막으로 전역변수로
T* T::m_pInstance = NULL;


이렇게 하면 callback함수 안에서 class 암에 있는 멤버 변수에 접근이 가능하게 된다.
void CALLBACK T::test()
{
       m_pInstance->변수이름;
       m_pInstance->함수;
}

반응형