Я пытаюсь создать ObjectTemplate, который содержит свойство, которое является массивом ObjectTemplate. Моя цель состоит в том, чтобы использовать этот ObjectTemplate для создания v8 :: Context, который будет иметь свойство, которое является массивом объектов.
v8::Local<v8::ObjectTemplate> t = v8::ObjectTemplate::New(isolate);
v8::Local<v8::Array> a = v8::Array::New(isolate, 3);
v8::Local<v8::ObjectTemplate> i0 = v8::ObjectTemplate::New(isolate);
i0->Set(isolate, "a", v8::String::NewFromUtf8(isolate, "hello"));
i0->Set(isolate, "b", v8::String::NewFromUtf8(isolate, "goodbye"));
a->Set(0, i0); // <== This is where compile error occurs
Не удается скомпилировать это сообщение об ошибке:
error C2440: '=': cannot convert from 'v8::ObjectTemplate *' to 'v8::Value *volatile '
В качестве обходного пути я попробовал это, но полученный объект не является массивом!
v8::Local<v8::ObjectTemplate> t = v8::ObjectTemplate::New(isolate);
v8::Local<v8::ObjectTemplate> i0 = v8::ObjectTemplate::New(isolate);
i0->Set(isolate, "a", v8::String::NewFromUtf8(isolate, "hello"));
i0->Set(isolate, "b", v8::String::NewFromUtf8(isolate, "goodbye"));
t->Set(isolate, "0", i0);
v8::Local<v8::Object> o;
if (t->NewInstance(context).ToLocal(&o))
{
v8::Local<v8::Value> x = o->Get(0);
if (x->IsArray())
{
std::cout << "It is an array" << std::endl;
}
else
{
std::cout << "It is not an array" << std::endl;
}
}
Любая помощь будет принята.