QList<QString> оператор <<

У меня есть элемент QList с именем компетенции внутри класса и другой объект класса с именем k. Я хочу сделать глубокую копию ( this.competence должен быть полной копией k.competence). Я использую итератор это:

QList< QString>::iterator it;
for(  it = k.competence->begin(); it != k.competence->end(); ++it )
{
    this.competence << (*it) ;
}

Я получил ошибку "нет совпадения для оператора<<". Проблема в том, когда я пытаюсь сделать это вне цикла:

QList< QString>::iterator it;
it = k.competence->begin();
this.competence << *it;

это не дает ошибок.

РЕДАКТИРОВАТЬ: РАЗРЕШЕНО с использованием метода QList.append() вместо оператора<<

1 ответ

Решение

Я не получаю ваш вариант использования здесь, вы можете сделать поверхностную копию QList, просто скопировав его. Если вы в дальнейшем измените общий экземпляр, будет создана глубокая копия.

QList newList(oldList);

Если вы хотите сделать это по-своему, вам нужно добавить итератор в ваш новый список

QList newList;
for(QList< QString>::iterator it = oldList->begin(); it != oldList->end(); it++ )
{
    newList.append(*it) ;
}
Другие вопросы по тегам