C++ 如何使静态回调c++;
我有两个文件,主文件和一个类。我想在类(void)内部调用一个函数,然后从该函数内部调用main中的另一个函数。在进行大量搜索之前,我找到了一种通过回调实现的方法,代码结果如下: 文件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<
#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();
}