班级成员在C Lambdas中捕获内部构造函数
Class members capturing inside constructor in c++ lambdas
说我们有A类:
class A
{
double x;
double y;
A(double, double);
function <double(void)> F;
};
和以下构造函数:
A::A(double a, double b)
{
x = a;
y = b;
F = [this]() { return x + y; };
}
为什么以下构造函数在以下构造函数导致编译错误时工作:member A::x is not a variable
?(y
的同样错误。(
A::A(double a, double b)
{
x = a;
y = b;
F = [x,y]() { return x + y; };
}
看来我只能捕获this
,而不是类成员。为什么?
来自cppreference - lambda表达式:
类成员不能在没有初始化器的情况下通过捕获明确捕获(如上所述,捕获列表中仅允许变量(:
class S {
int x = 0;
void f() {
int i = 0;
// auto l1 = [i, x]{ use(i, x); }; // error: x is not a variable
auto l2 = [i, x=x]{ use(i, x); }; // OK, copy capture
i = 1; x = 1; l2(); // calls use(0,0)
auto l3 = [i, &x=x]{ use(i, x); }; // OK, reference capture
i = 2; x = 2; l3(); // calls use(1,2)
}
};
相关文章:
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- C++构造函数具有内部链接,但未定义 [-Wundefined-internal]
- 班级成员在C Lambdas中捕获内部构造函数
- 用相同的参数将内部和外部构造函数分开
- 如何在类构造函数内部对同一类的成员函数启动pthread
- C++类的向量,不能在所述类的构造函数内部push_back
- C :如何通过其构造函数的参数初始化类内部矩阵的尺寸
- 在shared_ptr的复制构造函数内部
- 从构造函数中本地声明的device_vector使用device_vector::data()方法初始化结构内部的指针是
- 如何正确地从运算符构造函数内部调用复制构造函数
- gcc 4.7.3与构造函数一起使用make_shared时出现内部编译器错误
- 如何谷歌奇怪的字符,例如"~"内部问题,例如在构造函数之前的 c++ 中这意味着什么?
- 我应该在类构造函数内部还是外部初始化shared_ptr
- "this"指针在构造函数内部指向什么C++?
- dynamic_cast派生构造函数内部
- C++在子类内部调用基类构造函数
- 在boost::thread构造函数内部调用boost:;bind()时发生编译器错误
- 将内部构造函数切换为受保护的 typemap
- Qt:连接内部构造函数-将槽在对象初始化之前被调用