我正在编译一个开源项目,但是我收到了一个我从未见过的错误:
luascript.cpp: In member function ‘bool LuaInterface::loadDirectory(const string&, Npc*, bool)’:
luascript.cpp:742:41: error: ‘boost::filesystem2::basic_path<std::basic_string<char>, boost::filesystem2::path_traits>::string_type’ has no member named ‘string’
这是源代码:
bool LuaInterface::loadDirectory(const std::string& dir, Npc* npc/* = NULL*/, bool recursively/* = false*/)
{
StringVec files;
for(boost::filesystem::directory_iterator it(dir), end; it != end; ++it)
{
std::string s = it->path().filename().string(); //This is line 742
if(boost::filesystem::is_directory(it->status()))
{
if(recursively && !loadDirectory(it->path().filename() + "/" + s, npc, recursively))
return false;
}
else if((s.size() > 4 ? s.substr(s.size() - 4) : "") == ".lua")
files.push_back(s);
}
std::sort(files.begin(), files.end());
for(StringVec::iterator it = files.begin(); it != files.end(); ++it)
{
if(!loadFile(dir + (*it), npc))
return false;
}
return true;
}
答案 0 :(得分:2)
在旧版本的boost文件系统中,方法filename()的返回类型是string_type而不是path类型。 string_type没有与路径类型相反的成员filename()。
对于您正在使用的旧版本的boost,您可以删除代码中的.string()部分。