Вернуть 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 является защищенным членом.

4

Решение

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

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]