In a C++ callback, one argument is a function and I want to get the 
Local<Function> handle of it. With an earlier version of V8, this worked.

Local<Function> function = Local<Function>::Cast(args[0]->ToObject());


Now, I tried to directly cast the argument like I've seen it in an example. 
This is my whole C++ callback.

void callback(const FunctionCallbackInfo<Value> &args)
> {
>     Isolate* isolate = args.GetIsolate();
>     HandleScope scope(isolate);
>     if (args.Length() < 1 || !args[0]->IsFunction()) {
>         
> isolate->ThrowException(Exception::TypeError(String::NewFromUtf8(isolate, 
> "first argument must be a function")));
>         return;
>     }
>     Local<Function> function = Local<Function>::Cast(args[0]); // error is 
> at this line

    // ...

}


However, I get the following compile error.

1> v8/v8.h(5571): error C2248: 'v8::HandleScope::CreateHandle' : cannot 
> access protected member declared in class 'v8::HandleScope'
> 1> v8/v8.h(837) : see declaration of 'v8::HandleScope::CreateHandle'
> 1> v8/v8.h(817) : see declaration of 'v8::HandleScope'
> 1> v8/v8.h(5566) : while compiling class template member function 
> 'v8::Handle<v8::Function> v8::Handle<v8::Function>::New(v8::Isolate *,T *)'
> 1> with
> 1> [
> 1>     T=v8::Function
> 1> ]
> 1> v8/v8.h(311) : see reference to function template instantiation 
> 'v8::Handle<v8::Function> v8::Handle<v8::Function>::New(v8::Isolate *,T *)' 
> being compiled
> 1> with
> 1> [
> 1>     T=v8::Function
> 1> ]
> 1> v8/v8.h(354) : see reference to class template instantiation 
> 'v8::Handle<v8::Function>' being compiled
> 1> source.cpp(48) : see reference to class template instantiation 
> 'v8::Local<v8::Function>' being compiled

 
How can I cast a callback argument to Local<Function>?

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to