c++ - boost::remove_if 导致错误(只读变量不可赋值)

标签 c++ boost lambda

我的方法看起来像这样,在 vector 中编译期间出现错误“Read-only variable is not assignable”。 可能是什么问题?

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

最佳答案

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

关于c++ - boost::remove_if 导致错误(只读变量不可赋值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593718/

相关文章:

c++ - 如何将派生类的 std::list 而不是父类的 std::list 传递给函数?

c++ - 指向 boost 指针容器中元素的指针

Java 8 条件过滤和收集自定义 map

python - 解释这个 lambda

c++ - 通过右值引用返回与通过值返回

android - 如何将 "Chrome"(或等效项)作为线程而不是进程启动?

c++ - 从对象的容器传递到这些对象的属性的容器

c++ - 转发声明一个 boost::multi_index_container 对象

c++ - 为什么无状态仿函数的operator()不能是静态的?

c++ - 返回私有(private)数组