在'* __result = * __first'中无法与'operator='匹敌

no match for 'operator=' in '* __result = * __first'

本文关键字:operator 匹敌 result first      更新时间:2023-10-16

我正试图在std::vector中复制QList这是我的代码:

std::copy(_param_31.listJobs->list_USCOREjobs.begin(),
          _param_31.listJobs->list_USCOREjobs.end(),
          listJobs.toVector().toStdVector().begin());

_param_31.listJobs->list_USCOREjobs // is a vector
listJobs // is a QList

错误为:

no match for 'operator=' in '* __result = * __first'

非常感谢。

toStdVector()创建一个新向量,该向量具有与Qt集合相同的元素。指定给该向量不会对原始集合产生任何影响。toVector()也只是创建一个临时的。

我还没有使用过Qt,但看起来Qt容器可以像标准容器一样使用。所以,假设你试图用_param_31.listJobs->list_USCOREjobs的内容替换listJobs的内容,我认为你可以这样做:

listJobs.clear();
std::copy(_param_31.listJobs->list_USCOREjobs.begin(),
          _param_31.listJobs->list_USCOREjobs.end(),
          std::back_inserter(listJobs));