4

我有两个子类Nan::ObjectWrap

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

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

如何ZyreEvent从 in 中的方法返回 javascript 对象Zyre

我有以下方法,我在其中创建了一个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是受保护的成员。

4

1 回答 1

1

如果我理解正确,您想从 (subclass of)Nan::ObjectWrap的另一个 (subclass of) 方法实例返回Nan::ObjectWrap

注意:我没有经验,所以这可能有错误或错误。我把我的资料放在括号里,我猜是如何完成的例子。

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