2017-03-21 14 views
0

最初のループで非ブロッキングコールのリストを作成し、2番目のループで待機しようとしています。なぜ私は機能を削除するのですか?削除された関数のエラー使用

std::list< vendorClient> vendorQ; 
for (auto &addr : vendors_) { 
    vendorClient vendor(); 
    vendor.someFunc(); 
    vendorQ.push_back(vendor); 
} 

// Now block till they finish up 
while (vendorQ.size() >0) { 
    vendorClient ven = vendorQ.front(); // ERROR use of deleted function <<< 
    vendorQ.pop_front(); 
    // ..more stuff 
    } 
+4

あなたは 'vendorClient'のコピーコンストラクタを' delete'dしたようです。 [mcve]を投稿してください。 –

+0

コンパイラエラーと 'vendorClient'ヘッダ定義を追加してください。 – Ludonope

+0

3行目に 'vendorClient vendor();'の代わりに 'vendorClient vendor;'と書いておきたいと思うかもしれません。 – pschill

答えて

0

vendorClientのコピーコンストラクタは、明示的に削除宣言されている可能性があります

vendorClient(cosnt vendorClient &) = delete; 

または暗黙的に削除されました。コンパイラはvary reasonsのためにこれを行うかもしれません。その場合は、コピー構造体venのコピーコンストラクタを明示的に定義する必要があります。

実際には、vendorQが保持するインスタンスがすぐに破棄されるため、構造体venを移動することもできます。

vendorClient ven = std::move(vendorQ.front()); 
vendorQ.pop_front(); 
関連する問題