每个人。最近我面临挑战。不能说这是一个关键问题,但只是一件有趣的事情。有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
所以,我知道我们可以从这样的指针调用函数:(this->*m_callBack(((。但是静态类成员无权访问"this"指针。当然,我可以用m_callBack指针存储父对象的指针,并调用(parent->*m_callBack(((。在同样的情况下,情况可能就不那么好了。所以,我的问题是:是否有其他方法可以从静态类成员调用m_callBack函数。此外,我对–如果m_callBack引用静态或非静态函数的类成员很感兴趣。
如果希望成员变量m_callBack工作,则应将其设为公共变量。然后你可以写
Data::setCallback(...);
...
Data::m_callBack();
或者更确切地说
if ( Data::m_callBack )
{
Data::m_callBack();
}
我认为您有一个设计问题。要么您想要一个非静态的Callback
(即m_callBack
(,要么您想要将回调类型定义为一个静态函数(即不需要this
(。