gpt4 book ai didi

c++ - 需要从静态成员调用函数(由静态指针引用)

转载 作者:行者123 更新时间:2023-11-28 08:14:14 26 4
gpt4 key购买 nike

大家。最近我面临挑战。不能说这是一个关键问题,而是一件有趣的事情。有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();
}

关于c++ - 需要从静态成员调用函数(由静态指针引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8148861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com