nodejs:没有返回值的函数模板
我遵循node.js的指令来实现工厂包装对象。
到目前为止它的工作。 但是我没有得到的是一个没有返回值的函数。
即:(在链接中的例子的扩展)
在myObject.h
:
tpl->PrototypeTemplate()->Set(String::NewSymbol("some"), FunctionTemplate::New(something)->GetFunction()); static void something (const v8::Arguments& args);
和myObject.cc
void MyObject::something(const Arguments& args) { .. something without return value ... }
不起作用。 为什么?
我得到以下错误:
error: invalid conversion from 'void (*)(const v8::Arguments&)' to 'v8::InvocationCallback {aka v8::Handle<v8::Value> (*)(const v8::Arguments&)}' [-fpermissive] error: initializing argument 1 of 'static v8::Local<v8::FunctionTemplate> v8::FunctionTemplate::New(v8::InvocationCallback, v8::Handle<v8::Value>, v8::Handle<v8::Signature>)' [-fpermissive]
我真的需要返回值吗? 我的意思是我coud返回null并忽略它,不是一个问题,但那不是一个很好的解决scheme。
错误是因为FunctionTemplate::New()
需要一个InvocationCallback
,它具有Handle<Value>
的return
types。
所以,你将不得不return
一些东西,但它可以简单地是Undefined()
:
Handle<Value> MyObject::something(const Arguments& args) { HandleScope scope; return scope.Close(Undefined()); }
这使得它相当于:
function something() {}
其中有一个隐含的return;
(或return undefined;
)。