C++ 如何使静态回调c++;

C++ 如何使静态回调c++;,c++,function,winapi,static,callback,C++,Function,Winapi,Static,Callback,我有两个文件,主文件和一个类。我想在类(void)内部调用一个函数,然后从该函数内部调用main中的另一个函数。在进行大量搜索之前,我找到了一种通过回调实现的方法,代码结果如下: 文件 #include <functional> #include <iostream> class Foo { public: std::function<void()> onCallBackResult; void start(std::function<

我有两个文件,主文件和一个类。我想在类(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 << "Result\n";
}

int main() {
    Foo foo;
    foo.start(std::bind(onCallBackResult));
}
#包括
#包括
福班
{
公众:
std::函数onCallBackResult;
无效开始(std::函数回调)
{
onCallBackResult=回调;
第二个();
}
void second(){//此处需要是静态的
onCallBackResult();
}
};
void onCallBackResult()
{

std::cout您只需要一个原型。不需要任何机制(
std::bind
std::function
)。在“Foo.h”中:

然后将函数更改为调用该函数:

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

类不是文件。文件不是类。
Foo-Foo=Foo();
不要这样做。只要写
Foo-Foo;
你的例子的哪一部分不起作用?@Amadeus我用你的代码和一些更改更新了这个例子,以更好地解释ma的情况。如果我选择“第二个”静态我无法访问onCallBackResult,也无法将其设置为静态,因为不允许我访问。这就是您试图实现的吗?问题是我要调用的main函数并不总是相同的函数,因此我希望始终指定要使用的函数。@OnelioD--您仍然不需要所有的机制。请阅读“指向函数的指针”。
void start()
{
//Do some tasks
onCallBackResult();
}