我刚刚将 V8 版本升级到 3.20.16(从一些非常旧的版本)。我不能再使用
Handle<Object> obj /* = ... */;
Persistent<Object> p = Persistent<Object>::New( obj );
Run Code Online (Sandbox Code Playgroud)
创建对象的持久句柄。编译器建议static T* v8::Persistent<T>::New(v8::Isolate*, T*) [with T = v8::Object]改用。但是,如果我将代码更改为
Handle<Object> obj /* = ... */;
Persistent<Object> p = Persistent<Object>::New( Isolate::GetCurrent(), *obj );
Run Code Online (Sandbox Code Playgroud)
编译器抱怨这个函数是私有的。我现在如何Persistent<Object>从正常创建句柄Handle<Object>?
我用谷歌搜索,我发现的唯一一件事是文档似乎相互矛盾:
Persistence<T>::New仍然是要走的路提前感谢您的任何帮助
有一个接受普通的构造函数Handle<T>,您不需要取消引用它。
Persistent<Object>::New(Isolate::GetCurrent(), obj)
Run Code Online (Sandbox Code Playgroud)
应该管用。