无法引用std :: unique_ptr - 它是一个已删除的函数

时间:2014-03-30 13:20:30

标签: c++ pointers c++11 smart-pointers unique-ptr

我目前正在努力将原始点转换为std::unique_ptr。我唯一不明白的是为什么这段代码不起作用:

auto it = entities.begin();
while (it != entities.end()) {
    int index = getIndex((*it)->getAABB());
    if (index != -1) {
        children.at(index)->insert(std::move(*it)); // Error
        it = entities.erase(it);
    }
    else {
        it++;
    }
}

实体是:

typedef std::unordered_set<std::unique_ptr<QuadTreeObject>> EntityContainer;
EntityContainer entities;

错误说std::unique_ptr cannot be referenced, it is a deleted function.

1 个答案:

答案 0 :(得分:0)

您无法将unique_ptr存储在unordered_set中,然后再将其取出。

在容器中访问const时,move无效。

缺乏透明的哈希函数也使查找元素变得困难。