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

std::unique_ptr cannot be referenced -- it is a deleted function

本文关键字:一个 删除 函数 ptr unique 不能 引用 std      更新时间:2023-10-16

我目前正在尝试通过将原始点转换为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.

您不能将unique_ptr存储在unordered_set中并再次取出。

在容器中访问是const的,因此您的move不执行任何操作。

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