Передать аргументы в другую функцию

Здесь я назначаю один аргумент обработчику:

const unsigned argc = 1;
v8::Local<v8::Value> argv[1] = { NanNew("hello world") };

NanMakeCallback(NanGetCurrentContext()->Global(), callHandle, argc, argv);

Оно работает

Но я хочу назначить два параметра! Вот почему я попытался сделать:

 const unsigned argc = 2;
v8::Local<v8::Value> argv[1] = { NanNew("hello world") };
argv[2] = { NanNew("second argument") };

NanMakeCallback(NanGetCurrentContext()->Global(), callbackHandle, argc, argv);

Но тогда я получаю эту ошибку:

functions.cc:97:18: error: expected expression
argv[2] << { NanNew("second argument") };
^

Что я не прав? Как я могу назначить два аргумента? Спасибо

0

Решение

Вы, кажется, создаете массив размером 1:

v8::Local<v8::Value> argv[1] = { NanNew("hello world") };

Затем пытается назначить { NanNew("second argument") }; к его элементу с индексом 2. Это не будет работать. Вы имели в виду что-то вроде этого:

v8::Local<v8::Value> argv[2] = { NanNew("hello world"), NanNew("second arg") };

?

3

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

Вы пытаетесь выполнить инициализацию в два этапа.

int values[2] = { 0, 1 }; // OK: Array of two ints initialized with 0 and 1 respectively

int values[2] = { 0 }; // OK: Array of two ints, first value initialized with 0
values[1]= { 1 }; // Error: This is not an initialization

Синтаксис {} используется только для инициализации массивов. (Ну и конечно функции тел и тому подобное)

В вашем случае, вы, вероятно, хотите сделать это

v8::Local<v8::Value> argv[2] = { NanNew("hello world") , NanNew("second argument") };

Обратите внимание, что ранее вы пытались создать массив только с 1 элементом argv [1] и пытались получить доступ к третьему элементу argv [2] = …

Индексы начинаются с 0, поэтому допустимые индексы варьируются от 0 до N-1.

3

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