假设我有以下代码(C++ / Qt):
QHash<QString, AppInfo*> links;
QList<AppInfo> apps = m_apps.values();
for (const AppInfo &app : apps) {
// Doing something with #app variable...
links.insert(app.other._appFile, &app);
}
m_apps
是QHash<QString, AppInfo>
,而app.other._appFile
是文件的完整路径。问题来了:倒数第二行中的构造
&app
是否正确?我需要一个指向AppInfo对象的非恒定指针,以便以后对其进行修改。 &app
是否直接链接到const AppInfo&
或AppInfo
对象?如果我尝试修改获取的AppInfo*
对象,应用程序不会崩溃吗?谢谢。抱歉,英语不是我的母语,并且我不能完美地表达问题的标题。请代替我做。
最佳答案
links
是QHash<QString, AppInfo*>
,而不是QHash<QString, const AppInfo*>
,因此通过
links.insert(app.other._appFile, &app);
您正在启动从
const AppInfo*
到AppInfo*
的隐式转换,这将导致编译器错误,而不是运行时错误(崩溃)。一个明显的解决方案是在没有const的情况下遍历 map for (AppInfo &app : apps)
{
}
关于c++ - 指向C++ 11 foreach循环中的链接的链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17069808/