模板中std::bind绑定成员函数
时间: 2024-09-15 15:01:19 浏览: 49
C++11中lambda、std::function和std:bind详解
在C++11中,`std::bind`可以用来绑定包括成员函数在内的可调用对象。要绑定一个成员函数,你可以按照以下步骤:
1. **创建bind实例**:
使用`std::bind`函数并传入待绑定的成员函数,以及可能的对象(如果函数是静态成员则无需传递)。
```cpp
std::function<decltype(obj.member_function(args...))> boundMemberFunction = std::bind(&YourClass::member_function, obj, args...);
```
其中`obj`是类的对象,`member_function`是你想要绑定的成员函数名,`args...`是要传递给函数的参数。
2. **调用bind实例**:
调用`boundMemberFunction`就像调用普通函数一样。
```cpp
result = boundMemberFunction();
```
请注意,这里的`decltype`用于获取函数返回类型,确保bind实例有正确的类型。
阅读全文