小编Mik*_*lin的帖子

C++如何将unique_ptr的队列添加到向量中

简化代码:

#include <queue>
#include <memory>
#include <vector>

class Foo {
public:
    Foo() {};
    virtual ~Foo() {}
};

int main()
{
    std::queue<std::unique_ptr<Foo>> queue;
    auto element = std::make_unique<Foo>();
    queue.push(std::move(element));
    std::vector<std::queue<std::unique_ptr<Foo>>> vector;
    // Error 1
    vector.push_back(queue); 
    // Error 2
    vector.push_back(std::move(queue));
    // Error 3
    vector.push_back({});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误:

'std :: unique_ptr> :: unique_ptr(const std :: unique_ptr <_Ty,std :: default_delete <_Ty >>&)':尝试引用已删除的函数

显然复制了unique_ptr的复制,但我不是要复制它.我呢?

c++ stl copy-constructor unique-ptr

5
推荐指数
1
解决办法
349
查看次数

标签 统计

c++ ×1

copy-constructor ×1

stl ×1

unique-ptr ×1