如何进行静态回调 c++



我有两个文件,一个主文件和一个类。我想在类(void(中调用一个函数,并从该函数内部调用main中的另一个函数。在进行大量搜索之前,我找到了使用回调的方法,代码最终如下所示:

文件

#include <functional>
#include <iostream>
class Foo 
{
public:
    std::function<void()> onCallBackResult;
    void start(std::function<void()> callback)
    {
        onCallBackResult = callback;
        second();
    }
    void second() { //Needs to be static here
        onCallBackResult();
    }
};
void onCallBackResult() 
{
    std::cout << "Resultn";
}
int main() {
    Foo foo;
    foo.start(std::bind(onCallBackResult));
}

它运行良好,但问题是我真的需要使start静态,因为它可以从 Windows api 与 WndProc 一起使用,但我也不能使类中的onCallBackResult静态,因为我想知道是否有办法解决此问题或任何其他从main调用函数的方法。

谢谢!

你所需要的只是一个原型。这些机制(std::bindstd::function(都不需要。在"Foo.h"中:

void onCallBackResult();

然后更改函数以调用该函数:

void start()
{
//Do some tasks
onCallBackResult();
}

最新更新