c ++替代成员定义

Gae*_*ano 15 c++ syntax class member c++14

在C++中,您可以通过以下方式定义成员:

struct test {
    using memberType = int(int);
    /*virtual*/ memberType member;
};

int test::member(int x) { return x; }
Run Code Online (Sandbox Code Playgroud)

使用C++ 14有没有办法在类定义中定义成员,例如使用lambda?

gbe*_*har 7

我不认为这是可能的,但如果成员是指向函数的指针,你可以这样做

struct test {
    int (*member)(int) = [](int x){return x;};
};
Run Code Online (Sandbox Code Playgroud)

因为具有空捕获列表的lambda实际上是常规函数

  • 如果将其更改为`using memberType = int(*)(int);`,您也可以保留别名 (4认同)