std::bind可以不传类指针吗
时间: 2023-07-22 09:35:13 浏览: 38
可以的。在使用std::bind时,如果绑定的成员函数是静态成员函数,或者是非成员函数,就不需要传类指针了。
例如,假设有一个全局函数func和一个类A,A中有一个静态成员函数static_func,可以这样使用std::bind来绑定函数:
```
void func(int arg) {
// do something
}
class A {
public:
static void static_func(int arg) {
// do something
}
};
int main() {
auto func_ptr = std::bind(&func, std::placeholders::_1);
func_ptr(123); // 调用全局函数func,传入参数123
auto static_func_ptr = std::bind(&A::static_func, std::placeholders::_1);
static_func_ptr(123); // 调用A的静态成员函数static_func,传入参数123
return 0;
}
```
在上面的代码中,首先定义了一个全局函数func和一个类A,其中A定义了一个静态成员函数static_func。在main函数中,分别使用std::bind绑定了func函数和static_func函数,并使用placeholders占位符占位,最后调用对应的函数指针,并传入实际的参数,即可调用对应的函数。
需要注意的是,如果要绑定的是类的非静态成员函数,就必须传入类指针。