我试图在第一个循环中创建一个非阻塞调用列表,然后在第二个循环中等待。为什么我会删除功能?
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
}
答案 0 :(得分:0)
vendorClient
的复制构造函数可能已被显式声明删除:
vendorClient(cosnt vendorClient &) = delete;
或已被隐式删除。编译器可以为vary reasons执行此操作。如果是这样,您需要明确定义复制构造ven
的复制构造函数。
实际上,您也可以尝试移动构造ven
,因为vendorQ
持有的实例会在之后立即销毁。
vendorClient ven = std::move(vendorQ.front());
vendorQ.pop_front();