Jay*_*Jay 1 c++ for-loop object-lifetime auto c++11
我目前正在将我的代码转换为C++ 11并且在以下基于范围的for循环中遇到问题(FWIW,相同的代码在使用BOOST for_each之前运行得很好).
所述mLibraryFiles
构件(STL向量)是一个单件实例的一部分,并且保证当呼叫者检查返回的对象只包含垃圾的方法返回后存在,但是.
通过它进行调试似乎在从方法返回之后从预期内容转为垃圾,所以我想我必须对C++ 11基于范围的循环实际如何工作有所不妥:
Entry* FindEntry(string inName)
{ Entry *rs = NULL;
for (auto libraryEntry : mLibraryFiles)
{
if (libraryEntry.filename.compare(inName) == 0)
{
rs = &libraryEntry;
break;
}
}
return rs;
}
Run Code Online (Sandbox Code Playgroud)
我原以为libraryEntry
变量代表mLibraryFiles
向量中的实际对象?
任何见解都非常感谢!
(编译器是LLVM 5.0虽然我怀疑这很重要..)