gpt4 book ai didi

c++ - 具有原始数据指针和 emscripten 的对象

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:41 25 4
gpt4 key购买 nike

改写问题:

当我事先不知道数组的长度时,我应该如何将一个函数绑定(bind)到 javascript,该函数返回一个带有数组作为成员变量的对象从 C/C++ API 到 javascript?


我有一个带有原始数据类型指针的结构

struct Person
{
const char* name;
int age;
Person()
{}
};

我有一个函数应该返回这个结构的一个对象

Person getPerson()
{
Person p = Person();
p.name = "Philipp";
p.age = 77;
return p;
}

和以下嵌入:

EMSCRIPTEN_BINDINGS() {
value_object<Person>("Person")
.field("age", &Person::age)
.field("name", &Person::name)
;

function("getPerson", &getPerson);
}

这不起作用,编译器还告诉我 static_assert failed "Implicitly binding raw pointers is illegal. Specify allow_raw_pointer<arg<?>>"我试图理解 API documentation但我无法让它发挥作用。例如。我尝试添加 allow_raw_pointer() (及其变体)到 .fieldname .

最佳答案

class_::property 可以指定 getter 和 setter 函数。

    std::string getPersonName(const Person& p) {
return p.name;
}

EMSCRIPTEN_BINDINGS() {
class_<Person>("Person")
.property("age", &Person::age)
.property("name", &getPersonName)
;

function("getPerson", &getPerson);
}
/*
var p = Module.getPerson();
console.log(p);
console.log(p.age);
console.log(p.name);
*/

关于c++ - 具有原始数据指针和 emscripten 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632671/

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