我有两个子类Nan :: ObjectWrap
class Zyre: public Nan::ObjectWrap {...}
class ZyreEvent: public Nan::ObjectWrap {...}
如何从Zyre中的方法返回ZyreEvent javascript对象?
我有以下方法,其中我创建了一个ZyreEvent:
NAN_METHOD (Zyre::_recv) {
Zyre *node = Nan::ObjectWrap::Unwrap <Zyre> (info.Holder ());
ZyreEvent *zyre_event = new ZyreEvent (node->self);
info.GetReturnValue().Set(zyre_event->Wrap(info.This()));
}
但我无法包装zyre_event,因为Wrap是受保护的成员.
最佳答案 如果我理解正确,你想从(子类)Nan :: ObjectWrap的另一个(子类)Nan :: ObjectWrap的方法实例返回.
注意:我没有经验,所以这可能有错或错.我把我的信息源放在括号中,我猜测它是如何完成的.
>在接收自身指针的第一个类中创建静态NewInstance方法(NewInstance)
>使用v8 :: External来包装第一个类’C对象,并将其作为参数传递给New,其中argc和argv传递给第一个类’构造函数(using v8::External)(v8::External doc)
>编辑第一类’新方法并处理info.Length()== 1&& info [0] – > IsExternal()案例,在这种情况下基本上是复制构造函数(copying passed pointer)
>在第二个类中使用… :: NewInstance()来设置返回值