gpt4 book ai didi

C++ Visual Studio 错误 : Identifier cannot be implicitly captured because no default capture mode has been specified

转载 作者:行者123 更新时间:2023-11-30 04:59:04 55 4
gpt4 key购买 nike

我正在尝试提取此代码中 dir_entry.path() 的值并想将其复制到 compFileName 中。问题是我一直收到错误“compFileName cannot be implicitly capture because no default capture mode have been specified”。

我知道它与 lambda 函数有关,但我对它们的经验为零。关于我应该如何解决这个问题以实现我想要的,有什么建议吗?

#include <filesystem>
#include <algorithm>

namespace fs = std::filesystem;

void search(const fs::path& directory, const fs::path& file_name, string &compFileName)
{
auto d = fs::recursive_directory_iterator(directory);

auto found = std::find_if(d, end(d), [&file_name](const auto & dir_entry)
{
string t = dir_entry.path().filename().string();
compFileName = t;
return t == file_name;
);

}

最佳答案

除非捕获它们,否则不能在 lambda 中使用周围变量。

您使用在周围范围内定义的 compFileName,但它没有列为捕获。

简单修复:将 &compFileName 添加到您的捕获列表:

[&file_name, &compFileName](const auto & dir_entry) { ... }

更简单:捕获所有使用的变量:

[&](const auto & dir_entry) { ... }

关于C++ Visual Studio 错误 : Identifier cannot be implicitly captured because no default capture mode has been specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51401689/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com