2012-12-10 40 views
0

我正在将一些使用void *作为上下文对象(在本例中为v8函数)的代码集成到一个函数中,但这会导致编译错误。你会如何处理这个问题?从void *投射到本地<Function>

void callback(void* context) { 
    Local<Function> func = static_cast<Local<Function> *>(context); 
    func->Call(Context::GetCurrent()->Global(), 1, 0); 
} 

这里是注册回调的代码。请注意,fn会作为void *传递给“回调”。

Persistent<Function> fn = Persistent<Function>::New(Handle<Function>::Cast(args[0])); 
registerEvent(&callback, /* context*/ &fn); 
+0

'本地 * func'应该做的伎俩。 –

回答

1

为了这个工作,你需要转换context并将其分配给一个指针的值,例如:

Local<Function> *func = static_cast<Local<Function> *>(context); 
+0

我现在得到另一个编译错误:'class v8 :: Local '没有名为'Call'的成员 – marchaos

+0

(* func) - > Call虽然做了诀窍。 – marchaos