2012-03-19 26 views
-2

我想在一個std :: vector的複製的QList這是我的代碼:在敵不過 '運算符=' '* __result = * __first'

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

真的嗎?這是__full__錯誤?你的問題是什麼? – orlp 2012-03-19 14:41:24

+1

您試圖將哪個對象複製到哪個對象?什麼是確切的類型(包括模板參數)?您發佈的代碼在多個級別上似乎沒有意義(例如,它似乎正在複製到臨時向量中)。 – interjay 2012-03-19 14:57:46

+1

爲什麼你會期望這個工作?只需手動複製這些元素 - 這需要你三行循環,你就完成了。寫這個問題的時間可能較少。 – 2012-03-19 14:57:54

回答

1

toStdVector()創建一個與Qt集合具有相同元素的新向量。分配給這個向量不會對原始集合產生任何影響。 toVector()也只是創建一個臨時的。

我沒有使用Qt,但它看起來像Qt容器可以使用幾乎相同的標準容器。因此,假設你想用的_param_31.listJobs->list_USCOREjobs我認爲你可以做這樣的內容,以取代listJobs內容:

listJobs.clear(); 
std::copy(_param_31.listJobs->list_USCOREjobs.begin(), 
      _param_31.listJobs->list_USCOREjobs.end(), 
      std::back_inserter(listJobs)); 
+0

非常感謝你,現在工作都很好。 – Jjreina 2012-03-19 16:27:41