我的方法看起来像这样,在编译过程中出现错误“向量中只读赋值变量”。 可能是什么问题?
int DownloadManager::RemoveDownload(const char *escapedTitle, const char *fileId)
{
boost::remove_if(Core::defaultCore().GetSocketsQueue()->GetQueue(), [&](SocketConnection* socket) {
if (strcmp(escapedTitle, socket->GetDownload()->escaped_title.c_str()) == 0 && strcmp(fileId, socket->GetDownload()->fileId.c_str()) == 0)
{
Core::defaultCore().GetDownloadQueue()->Remove(socket->GetDownload());
return true;
}
return false;
});
return 0;
}
粘贴只是为了显示上面的GetQueue()。
std::vector<SocketConnection*> GetQueue()
{
return this->sockets_queue;
}
答案 0 :(得分:1)
你应该从GetQueue
返回引用,因为现在你试图从临时变量中删除,这是不允许的,因为remove_if
第一个参数应该是引用,没有临时转换 - 可以参考。