从另一个Nan :: ObjectWrap返回Nan :: ObjectWrap

时间:2016-08-05 17:25:04

标签: c++ node.js node.js-addon node.js-nan

我有两个Nan::ObjectWrap

的子类
class Zyre: public Nan::ObjectWrap {...}

class ZyreEvent: public Nan::ObjectWrap {...}

如何从ZyreEvent中的方法返回Zyre 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是受保护的成员。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想从Nan::ObjectWrap的另一个(子类)Nan::ObjectWrap的方法实例的(子类)返回。

注意:我没有经验,所以这可能有错或错。我把我的信息源放在方括号中,我猜测它是如何完成的。

  1. 在接收自身指针的第一个类中创建static NewInstance方法(NewInstance
  2. 使用v8::External包装第一类'C ++对象,并将其作为New的参数传递给argcargv到第一类'构造函数(using v8::External })(v8::External doc
  3. 编辑第一个类'New方法并处理info.Length() == 1 && info[0]->IsExternal()案例,在这种情况下基本上是复制构造函数(copying passed pointer
  4. 在第二课程中使用...::NewInstance()设置返回值