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