我有一个带有 bar() 方法的 Foo 类。 我还有一个 bar2() 函数(在任何类之外) 还有一个 Xpto 类,我需要在其中设置带有一些回调的构造函数。
class Foo
{
//...
public:
bar()
{
//do stuff..
}
//...
}
//isolated C function outside class
void bar2()
{
}
class Xpto
{
//...
public:
Xpto(std::function<void()> &callback)
{
//do stuff..
}
//...
}
int main()
{
Xpto x1(bar2); // <---- compiles
Foo myFoo;
Xpto x2(myFoo.bar); // <--- doesn't compile
return 0;
}
为什么我可以使用 Foo 对象的回调方法创建 Xpto 对象?
最佳答案
因为 myFoo.bar
签名不等于 std::function<void()>
(因为它是成员函数)。您可以使用 std::bind
(并查看使用成员函数指针的正确语法)。
Xpto x2(std::bind(&Foo::bar, std::ref(myFoo)));
关于c++ - C 函数回调与 C++ 方法回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31723833/