我想在 v8 中公开 C++ 类成员,我知道如何公开类方法,但我不知道如何公开类成员。
C++ 类:
class Person{
public:
string name;
}
Javascript:
var p1 = new Person();
p1.name = "Jack";
我想实现这个,这是可能的。谢谢!
最佳答案
您可以为 Person 原型(prototype)模板使用 SetAccessor()
,将成员指针作为外部 V8 数据提供。但是你需要将 Person 的 C++ 实例包装到 V8 对象中,然后在他们的 args.This() 的访问器 getter/setter 回调中将这个 V8 对象解包回 C++ 对象
我在 v8pp
中使用这种方式图书馆。该库简化了 C++ 类和函数对 V8 的公开。对于类成员变量,它看起来像这样:
v8pp::class_<Person> Person_class(isolate);
Person_class
// bind member variable
.set("name", &Person::name)
关于javascript - 如何在 V8 中公开 C++ 类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39267598/