C++ C++;Visual Studio错误:无法隐式捕获标识符,因为未指定默认捕获模式
我试图在此代码中提取dir_entry.path()的值,并希望将其复制到compFileName中。 问题是我一直收到错误“compFileName无法隐式捕获,因为没有指定默认捕获模式。” 我知道这与lambda函数有关,但我对它们没有任何经验。 关于如何解决这个问题以实现我的目标,有什么建议吗C++ C++;Visual Studio错误:无法隐式捕获标识符,因为未指定默认捕获模式,c++,visual-studio,lambda,path,filesystems,C++,Visual Studio,Lambda,Path,Filesystems,我试图在此代码中提取dir_entry.path()的值,并希望将其复制到compFileName中。 问题是我一直收到错误“compFileName无法隐式捕获,因为没有指定默认捕获模式。” 我知道这与lambda函数有关,但我对它们没有任何经验。 关于如何解决这个问题以实现我的目标,有什么建议吗 #include <filesystem> #include <algorithm> namespace fs = std::filesystem; void searc
#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;
);
}
#包括
#包括
名称空间fs=std::filesystem;
无效搜索(常量fs::路径和目录,常量fs::路径和文件名,字符串和文件名)
{
autod=fs::递归目录迭代器(目录);
自动查找=标准::查找if(d,end(d),[&文件名](const auto&dir\u条目)
{
字符串t=dir_entry.path().filename().string();
compFileName=t;
返回t==文件名;
);
}
除非捕获周围变量,否则不能在lambda中使用它们
您可以使用周围范围中定义的compFileName
,但它没有作为捕获列出
简单修复:将&compFileName
添加到捕获列表中:
[&file_name, &compFileName](const auto & dir_entry) { ... }
更简单的是:捕获所有使用的变量:
[&](const auto & dir_entry) { ... }