我正在使用V8 javascript引擎并使用以下方法将一些值存储在C ++对象中:
v8::Persistent<v8::Primitive> m_Value;
我想使用保存的值来设置另一个Primitive并返回如下:
bool
MyClass::Convert(v8::Primitive& oValue)
{
oValue.Clear(); //<--Is Not a value method for Primitive. How can I clear it or set it to Null or Undefined?
oValue= m_Value;
}
第二行会导致编译错误: binary'=':找不到带有'v8 :: Persistent'类型右手操作数的运算符(或者没有可接受的转换)
如何从Persistent中取回Primitive值? 我试图取消引用m_Value。没运气。 这很简单...
答案 0 :(得分:1)
由于V8原语是垃圾收集的,因此您必须通过句柄访问它们。在您的代码中,m_Value
是句柄,但您的方法的输出也应该是句柄:
bool
MyClass::Convert(Handle<Primitive>& oValue)
{
oValue = Local<Primitive>::New(m_Value);
return true;
}
此外,根据您的方案,您可能希望创建两个方法,一个显式输出本地句柄,另一个输出持久句柄。或者您可以使用方法模板。