我正在使用V8 javascript引擎,并使用以下代码在C++对象中存储一些值:
v8::Persistent<v8::Primitive> m_Value;我想使用保存的值来设置另一个原语,并像这样返回:
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’类型的右操作数的运算符(或者没有可接受的转换)
如何从持久化中取回原始值?我试着取消引用m_Value。不走运。这必须是简单的。
发布于 2013-04-07 22:00:52
因为V8原语是垃圾收集的,所以您必须通过句柄访问它们。在您的代码中,m_Value是一个句柄,但您的方法的输出也应该是一个句柄:
bool
MyClass::Convert(Handle<Primitive>& oValue)
{
oValue = Local<Primitive>::New(m_Value);
return true;
}此外,根据您的方案,您可能希望创建两个方法,一个显式输出本地句柄,另一个输出持久句柄。或者,您可以使用方法模板。
https://stackoverflow.com/questions/15779517
复制相似问题