Оператор 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;

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

EDIT: РЕШЕНО с использованием метода QList.append() вместо оператора‹‹


person Luca Nicoletti    schedule 12.02.2015    source источник
comment
Извините, но это не имеет особого смысла, если компетенция является элементом списка, как вы можете перебирать элемент? тем временем вы должны перебирать список, почему вы не смотрите на этот ответ stackoverflow.com/questions/16800206/   -  person Marco    schedule 12.02.2015
comment
Пожалуйста, всегда указывайте точную дословную ошибку, которую выдает вам компилятор.   -  person ftynse    schedule 12.02.2015
comment
Спасибо всем, ребята! Вы были очень полезны   -  person Luca Nicoletti    schedule 12.02.2015


Ответы (1)


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

QList newList(oldList);

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

QList newList;
for(QList< QString>::iterator it = oldList->begin(); it != oldList->end(); it++ )
{
    newList.append(*it) ;
}
person owang    schedule 12.02.2015
comment
Я понял! Спасибо! Я использовал оператор ‹‹ для добавления элементов, но обнаружил, что это ошибка. Метод append() работает нормально. - person Luca Nicoletti; 12.02.2015