Нет совпадения для '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));
Другие вопросы по тегам