首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >V8如何将v8::Persistent<v8::Primitive>转换为v8::Primitive?

V8如何将v8::Persistent<v8::Primitive>转换为v8::Primitive?
EN

Stack Overflow用户
提问于 2013-04-03 13:27:10
回答 1查看 1.1K关注 0票数 1

我正在使用V8 javascript引擎,并使用以下代码在C++对象中存储一些值:

代码语言:javascript
复制
v8::Persistent<v8::Primitive>  m_Value;

我想使用保存的值来设置另一个原语,并像这样返回:

代码语言:javascript
复制
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。不走运。这必须是简单的。

EN

回答 1

Stack Overflow用户

发布于 2013-04-07 22:00:52

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

代码语言:javascript
复制
bool
MyClass::Convert(Handle<Primitive>& oValue)
{
    oValue = Local<Primitive>::New(m_Value);
    return true;
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15779517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档