假设我有以下代码(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_appsQHash<QString, AppInfo>,而app.other._appFile是文件的完整路径。

问题来了:倒数第二行中的构造&app是否正确?我需要一个指向AppInfo对象的非恒定指针,以便以后对其进行修改。 &app是否直接链接到const AppInfo&AppInfo对象?如果我尝试修改获取的AppInfo*对象,应用程序不会崩溃吗?谢谢。

抱歉,英语不是我的母语,并且我不能完美地表达问题的标题。请代替我做。

最佳答案

linksQHash<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/

10-11 00:46