ModuleFunc tmpFunc = std::bind(&AitCMotionModuleBase::AitFmExecuteSingle, this, _motionIndex, true, std::placeholders::_1);
时间: 2024-01-21 19:02:00 浏览: 64
这是一个使用std::bind进行函数绑定的语句。其中,&AitCMotionModuleBase::AitFmExecuteSingle是一个成员函数的指针,this是该成员函数所属的对象指针,_motionIndex和true是该成员函数的参数,std::placeholders::_1表示该成员函数的第三个参数,将在调用时被动态指定。将这些参数绑定到一起,生成了一个可调用对象tmpFunc,可以通过tmpFunc来调用成员函数AitFmExecuteSingle,并传入动态指定的第三个参数。
相关问题
std::bind args
`std::bind` 是 C++11 引入的一个功能强大的工具,用于创建可调用的对象,这些对象代表原始函数的特定实例,允许你在不改变原函数签名的情况下绑定部分参数或整个函数。其基本语法如下:
1. **绑定普通函数**[^1]:
```cpp
#include <iostream>
#include <functional> // for std::bind
// 定义一个普通函数
double my_divide(double x, double y) {
return x / y;
}
int main() {
// 使用 std::placeholders 来定义占位符
using namespace std::placeholders;
// 绑定 my_divide 函数,第一个参数(x)固定为 2
auto fn_half = std::bind(my_divide, _1, 2);
// 调用结果相当于 my_divide(10, 2),输出 5
std::cout << fn_half(10) << '\n';
return 0;
}
```
在这个例子中,`std::bind` 把 `my_divide` 函数与 `2` 进行绑定,使得每次调用 `fn_half` 时,第一个参数总是 `2`。
2. **std::bind 返回类型**:
`std::bind` 的返回类型实际上是 `std::function` 或者一个兼容它的类型,它实现了 `Callable` 接口,即一个可以接受任意数量和类型的参数并返回值的函数对象。具体来说,它是一个未指定类型的函数对象 `T`,满足 `std::is_bind_expression::value == true` 和 `std::is_invocable<T>::value == true`。
总结来说,`std::bind` 可以让你动态地创建函数的副本,以便在不同的上下文中传递给其他函数或存储起来待后用。
std::bind什么意思
std::bind是C++11标准库中的一个函数模板,用于将函数和其参数绑定到一个函数对象上。这个函数对象可以在稍后的时间点上被调用,就像调用原始函数一样。std::bind的返回类型是一个未指定类型T的函数对象,这个类型T满足以下条件: std::is_bind_expression::value == true。在使用std::bind时,第一个参数是函数名或函数指针,后面的参数是函数的参数,可以使用占位符_1、_2、_3等来表示参数的位置,也可以直接传入参数值。下面是一个std::bind绑定普通函数的例子:
```c++
#include <iostream>
#include <functional> //for std::bind
using namespace std;
double my_divide (double x, double y) {return x/y;}
int main() {
using namespace std::placeholders; //for _1
auto fn_half = std::bind (my_divide,_1,2);
std::cout << fn_half(10) << '\n'; // 输出:5
return 0;
}
```
在这个例子中,我们使用std::bind将my_divide函数和参数2绑定到一个函数对象fn_half上,然后调用fn_half(10)就相当于调用my_divide(10, 2),输出结果为5。
阅读全文