Здесь я назначаю один аргумент обработчику:
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") };
^
Что я не прав? Как я могу назначить два аргумента? Спасибо
Вы, кажется, создаете массив размером 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") };
?
Вы пытаетесь выполнить инициализацию в два этапа.
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.