gpt4 book ai didi

c++ - 不能在 Emscripten 绑定(bind)中使用 unique_ptr 的 vector

转载 作者:行者123 更新时间:2023-11-30 03:50:23 24 4
gpt4 key购买 nike

我正在尝试用 Emscripten Bindings 绑定(bind)一些变量.问题是当我想绑定(bind)一个 unique_ptr vector 时,emscripten 尝试复制每个条目,这显然会导致编译错误。

error: call to implicitly-deleted copy constructor of 'std::__1::unique_ptr ...

note: copy constructor is implicitly deleted because 'unique_ptr<...>' has a user-declared move constructor

但是在emscripten的文档中,他们说支持unique_ptr。

代码:

class MyClass {
public:
using Entities = std::vector<std::unique_ptr<Entity>>;
public:
auto entities() const -> Entities const & { return _entities; }
private:
Entities _entities;
};

EMSCRIPTEN_BINDINGS(MyClass) {
emscripten::class_<MyClass>("MyClass")
.property("entities", &MyClass::entities);
}

我可以用简单的指针复制 vector ,但这不是真正的解决方案。 emscripten 中有一个特殊的选项/策略来处理 unique_ptr 吗?

编辑

emscripten 似乎不支持 vector 中的 unique_ptr。因此,为了避免数据重复,直接获取返回指针的 vector 上的一个条目的函数可能是一个很好的解决方案。

最佳答案

来自文档

embind has built-in support for return values of type std::unique_ptr.

我对此进行解释的方式是它内置了对返回类型为 std::unique_ptr 的函数的支持。它没有提到支持具有不可复制成员的容器

关于c++ - 不能在 Emscripten 绑定(bind)中使用 unique_ptr 的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com