1

我正在使用 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;
}

这第二行导致编译器错误:二进制“=”:未找到采用“v8::Persistent”类型的右侧操作数的运算符(或没有可接受的转换)

如何从 Persistent 中取回 Primitive 值?我试图取消引用 m_Value。没运气。这必须很简单......

4

1 回答 1

1

由于 V8 原语是垃圾回收的,因此您必须通过句柄访问它们。在您的代码中,m_Value是一个句柄,但您的方法的输出也应该是一个句柄:

bool
MyClass::Convert(Handle<Primitive>& oValue)
{
    oValue = Local<Primitive>::New(m_Value);
    return true;
}

此外,根据您的方案,您可能希望创建两种方法,一种显式输出本地句柄,另一种输出持久句柄。或者您可以使用方法模板。

于 2013-04-07T14:00:52.240 回答