2016-08-05 53 views
3

返回一個楠:: ObjectWrap我有Nan::ObjectWrap從另一個楠:: 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是一個受保護的成員。

回答

1

如果我理解正確,你想從Nan::ObjectWrap(的子類)Nan::ObjectWrap的(子類)Nan::ObjectWrap的方法實例返回。

注意:我沒有經歷過,所以這可能有錯或者是錯的。我已經把我的消息來源放在括號內,我猜想它是如何完成的。

  1. 在接收(NewInstance)的本身指針
  2. 使用v8::External包裹第一類的C++對象,並將其傳遞作爲Newargcargv到第一類的參數的構造函數的第一類創建static NewInstance方法(using v8::External)(v8::External doc
  3. 編輯第一類New方法和處理info.Length() == 1 && info[0]->IsExternal()情況下它基本上是在這種情況下,拷貝構造(copying passed pointer
  4. 使用...::NewInstance()二級設置返回值