链接到C ++ 11 foreach循环中的链接

时间:2013-06-12 15:45:41

标签: c++ qt

假设我有以下代码(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*对象,那么app会不会崩溃?谢谢。

抱歉,英语不是我的母语,我无法完美地提出问题标题。请做而不是我。

1 个答案:

答案 0 :(得分:2)

linksQHash<QString, AppInfo*>,而非QHash<QString, const AppInfo*>,因此为

links.insert(app.other._appFile, &app);

您正在启动从const AppInfo*AppInfo*的隐式转换,这将导致编译器错误,而不是运行时错误(崩溃)。一个显而易见的解决方案是遍历地图而不使用const

for (AppInfo &app : apps) 
{

}