我有这个模板:
template <class T>
v8::Handle<v8::Value> jsFunctionTemplate(const v8::Arguments &args)
{
T *t = static_cast<T*>(args.This()->GetPointerFromInternalField(0));
if (t != NULL) t->volume(args[0]->NumberValue());
return args.This();
}
我想让它 100% 动态化,所以我希望t->volume
用指针替换(std::mem_fn?)。问题是,我无法从类似的示例/问题中弄清楚如何保留 jsFunctionTemplate 的当前类型(它必须是 a v8::InvocationCallback
)
typedef Handle<Value> (*InvocationCallback)(const Arguments& args);
所以它的用法仍然可以是:
audio->PrototypeTemplate()->Set("Volume", v8::FunctionTemplate::New(&jsFunctionTemplate<Audio>));
我什至不反对使用 C++11 语法。