2015-02-12 196 views
0

我有一個名爲能力的QList元素在一個類中,另一個類對象名爲k。我想做一個深層複製(this.competence必須是k.competence的深層副本)。 我用一個迭代它:QList <QString>運算符<<

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議決()方法,而不是運營商< <

+0

抱歉,這並沒有多大意義,如果競爭力是列表如何的項目你可以迭代一個項目嗎?你應該在此期間迭代列表,爲什麼你不看看這個答案http://stackoverflow.com/questions/16800206/how-to-deep-copy-qmap-and-other-qt-containers – Marco 2015-02-12 08:53:56

+0

請,總是包含編譯器給你的確切的逐字錯誤。 – ftynse 2015-02-12 09:25:09

+0

謝謝所有人!你真的很有幫助 – 2015-02-12 11:52:20

回答

1

我沒有在這裏得到你的使用情況,你可以通過複製它做的QList的淺表副本。如果您進一步修改共享實例,將創建一個深層副本。

QList newList(oldList); 

如果你想要做你的方式,你需要將迭代器附加到新的列表

QList newList; 
for(QList< QString>::iterator it = oldList->begin(); it != oldList->end(); it++) 
{ 
    newList.append(*it) ; 
} 
+0

我明白了!謝謝!我使用操作符<<追加項目,但發現它是一個錯誤。 append()方法正常工作。 – 2015-02-12 11:50:40