boost :: remove_if导致错误(只读变量不可分配)

时间:2013-09-03 13:33:49

标签: c++ boost lambda

我的方法看起来像这样,在编译过程中出现错误“向量中只读赋值变量”。 可能是什么问题?

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;
}

1 个答案:

答案 0 :(得分:1)

你应该从GetQueue返回引用,因为现在你试图从临时变量中删除,这是不允许的,因为remove_if第一个参数应该是引用,没有临时转换 - 可以参考。