小编dun*_*can的帖子

C++ lambda,捕获为函数指针

我正在玩C++ lambdas以及它们对函数指针的隐式转换.我的开始示例是将它们用作ftw函数的回调.这按预期工作.

#include <ftw.h>
#include <iostream>

using namespace std;

int main()
{
    auto callback = [](const char *fpath, const struct stat *sb,
        int typeflag) -> int {
        cout << fpath << endl;
        return 0;
    };

    int ret = ftw("/etc", callback, 1);

    return ret;
}
Run Code Online (Sandbox Code Playgroud)

修改后使用捕获:

int main()
{

    vector<string> entries;

    auto callback = [&](const char *fpath, const struct stat *sb,
        int typeflag) -> int {
        entries.push_back(fpath);
        return 0;
    };

    int ret = ftw("/etc", callback, 1);

    for (auto entry : entries …
Run Code Online (Sandbox Code Playgroud)

c++ lambda function-pointers c++11

83
推荐指数
5
解决办法
5万
查看次数

标签 统计

c++ ×1

c++11 ×1

function-pointers ×1

lambda ×1