모두에서 함수 (정적 포인터에 의해 참조 됨)를 호출해야합니다. 최근 나는 도전에 직면 해있다. 그것은 중요한 문제라고 말할 수는 없지만 흥미로운 점이 있습니다. SRC 코드가있다 :정적 멤버
class Data {
typedef void (Object::*CallBack)(void);
public:
Data() : m_callBack(NULL) {}
void setCallBack(CallBack ptr)
{
m_callBack = ptr;
}
void start()
{
Aux::someAction();
}
private:
static CallBack m_callBack;
class Aux{
public:
static someAction()
{
if(m_callBack)
{
// How to call function for this reference ? - m_callBack
}
}
}; // End of 'Aux' class
}; // End of 'Data' class
그래서, 나는 우리가 그런 포인터에서 함수를 호출 할 수 있다는 것을 알고가 (이 -> * m_callBack)(). 그러나 정적 클래스 멤버는 'this'포인터에 액세스 할 수 없습니다. 물론 부모 포인터를 m_callBack 포인터로 저장하고 parent -> * m_callBack()을 호출 할 수 있습니다. 같은 경우에 그렇게 좋지 않을 수도 있습니다. 그래서, 내 질문 : 정적 클래스 멤버에서 m_callBack 함수를 호출하는 다른 방법이 있습니다. 또한 m_callBack이 정적 또는 비 정적 함수의 클래스 멤버를 참조하는 경우 흥미로운 점이 있습니다.
예. 좋은 생각이야. –