Вернуть Nan::ObjectWrap из другого Nan::ObjectWrap

У меня есть два подкласса Nan::ObjectWrap

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

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

Как я могу вернуть ZyreEvent объект 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 является защищенным членом.

1 ответ

Если я правильно понимаю, вы хотите вернуться из (подкласс) Nan::ObjectWrapметод экземпляра другого (подкласс) Nan::ObjectWrap,

Примечание: у меня нет опыта, поэтому в этом могут быть недостатки или ошибки. Я положил мои источники в скобках, где примеры, как это делается, я думаю.

  1. Создайте static NewInstance метод в первом классе, который получает указатель на себя ( NewInstance)
  2. использование v8::External обернуть объект C++ первого класса и передать его в качестве аргумента для New с argc а также argv в конструктор первого класса ( используя v8:: External) ( v8:: External doc)
  3. Редактировать первый класс New метод и управление info.Length() == 1 && info[0]->IsExternal() случай, который в основном является конструктором копирования в этом случае ( копирование переданного указателя)
  4. использование ...::NewInstance() во втором классе, чтобы установить возвращаемое значение
Другие вопросы по тегам