2015-06-08 5 views
0

Здесь я задаю один аргумент к проводнику:передать аргументы другой функции

Он работает

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

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

Ваше сообщение об ошибке не соответствует фрагменту кода, который вы показываете. –

+0

@ T.C. Извините уже правильно! –

ответ

3

Вы, кажется, создают массив размера 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") }; 

?

+0

Работает! Большое спасибо! –

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.

Смежные вопросы