字面描述是循环会分离此列表。
避免出现此警告用如下方法;
1、定义新变量:
const QStringList &list = oldList; for(auto &str : list){ }
2、使用qt的宏:
for(auto &str: qAsConst(list)){ } // c++11版本如下编译不通过,const一定要为变量值 for(auto &str: qAsConst(getList())){ }
3、可以自定义宏,stackoverflow说的:
template<class T> T const as_const(T&&t){return std::forward<T>(t);} template<class T> T const& as_const(T&t){return t;} for(auto&&item : as_const(foo())){ }
4、去掉引用
QStringList list = oldList; // 添加一个空数据,此时list就变为变量并经过深拷贝后,引用属性被删除 list.append(" "); for(auto &str : lists){ }