[英]C++ Delegate to member function using std::function and std::bind not calling function
[英]std::bind with member function and this in c++
我正在尝试学习 C++ 并且正在尝试使用标准库的 std::bind function 。 结果,我了解到 std::bind 允许包装 function 并部分应用 function。 这非常适用于不是 class 的成员函数的函数。 现在我尝试将 std::bind 与 class 成员函数和“this”指针一起使用,但我无法编译并且不知道如何解决这个问题。 有人可以帮助我真正理解 std::bind 吗?
#include <iostream>
#include <functional>
class Class1 {
public:
Class1() = default;
~Class1() = default;
void print(std::function<void(void)> function2) {
function2();
};
};
class Class2 {
public:
Class2() = default;
~Class2() = default;
void test_bind() {
std::function<void(void)> function2 = std::bind<void(void)>(&Class2::print, this);
class1.print(function2);
}
void print() {
std::cout << "CLASS 2" << std::endl;
};
Class1 class1;
};
int main(int ac, char **av)
{
Class2 class2;
class2.test_bind();
}
让编译器根据传递的 arguments 推断类型:
std::function<void(void)> function2 = std::bind(&Class2::print, this);
以上就够了。
带有显式模板 arguments 列表的版本如下所示:
std::function<void(void)> function3 = std::bind<void(Class2::*)(),Class2*>(&Class2::print, this);
// std::bind<void(Class2::*)(),Class2*>
/ \ / \
| |---- pointer to type of object instance you invoke member function
|--- pointer to member function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.