Нет совпадения для 'operator=' в '* __result = * __first'
Я пытаюсь скопировать QList в std::vector, это мой код:
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'
Большое вам спасибо.
1 ответ
Решение
toStdVector()
создает новый вектор, который имеет те же элементы, что и коллекция Qt. Присвоение этому вектору не повлияет на исходную коллекцию. toVector()
также просто создает временный.
Я не использовал Qt, но похоже, что контейнеры Qt можно использовать почти так же, как стандартные контейнеры. Итак, если вы пытаетесь заменить содержимое listJobs
с содержанием _param_31.listJobs->list_USCOREjobs
Я думаю, что вы можете сделать это так:
listJobs.clear();
std::copy(_param_31.listJobs->list_USCOREjobs.begin(),
_param_31.listJobs->list_USCOREjobs.end(),
std::back_inserter(listJobs));