c++11 range-loop might detach Qt container (QStringList)避免方法

字面描述是循环会分离此列表。

避免出现此警告用如下方法;

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){
}


本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不易,如果觉得有帮助,可打赏或点击右侧广告支持:

查看打赏记录

发表评论请遵守党国法律!后台审核后方可显示!
  • 最新评论
  • 总共0条评论
  • Blog v1.1© 2024 labisart.com 版权所有 | 联系:labartwork@163.com