C++将此指针与 lambda 函数中的绑定一起使用
C++ using this pointer with bind inside lambda function
我正在使用std::bind 在lambda函数内绑定成员函数,在某些代码中如下所示:
class A {
...
...
public:
foo(function<void()> f) {
}
...
...
};
class B {
...
...
A a;
public:
B_function_1(){
a.foo([](){
some_other_function(bind(&B::B_function_2, this, _1,_2));
}
...
private:
B_function_2(arg1, arg2) {
...
}
};
我的问题是当我尝试编译时出现此错误:
error: ‘this’ was not captured for this lambda function
在我的例子中,这是指当前的类(B类)。所以,我的问题是这里有什么问题?我错过了什么?
谢谢。
要在 lambda 中捕获 this 指针,请使用a.foo([this]()
[this] 按值捕获此指针[&] 通过引用捕获 lambda 主体中使用的所有自动变量 ODR
从文档
相关文章:
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 在基于范围的for循环中使用结构化绑定声明
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 视觉studo 2019中的漫画和静态/动态绑定
- 将自由函数绑定为类成员函数
- 将常量指针引用绑定到非常量指针
- 在派生类中绑定非静态模板化成员函数
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 如何将重新绑定与自定义分配器和自定义列表一起使用
- 如何使用泛型在 C# 中将类型静态绑定在一起(如在 TypeToType <T>中)?
- boost::与boost:asio绑定在一起.boost::绑定后续
- boost::与boost:asio绑定在一起.boost::绑定不起作用,从示例中复制
- boost::将 asio 与 accepter.async_accept 一起使用时出现绑定错误
- C++将此指针与 lambda 函数中的绑定一起使用
- Clang:将绑定或mem_fn与字符串::c_str和转换一起使用时出现问题
- 如何将Boost::asio::buffer(buf,size)与Boost绑定一起使用
- 与模板模板类一起使用的自定义模板参数绑定器
- 将C++绑定与GObject Introspection一起使用