2013-08-07 1 views
1

node.js의 지시에 따라 팩토리 랩 객체를 구현했습니다.
지금까지 작동합니다. 하지만 작동하지 않는 것은 반환 값이없는 함수입니다.
즉 : (링크의 예 연장)
myObject.h에서 : nodejs : 반환 값이없는 함수 템플릿

tpl->PrototypeTemplate()->Set(String::NewSymbol("some"), 
    FunctionTemplate::New(something)->GetFunction()); 

static void something (const v8::Arguments& args); 

void MyObject::something(const Arguments& args) { 
    .. something without return value ... 
} 

myObject.cc에서 작동하지 않습니다. 왜?

나는 다음과 같은 오류를 얻을 :

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] 

난 정말 반환 값을 필요합니까? 나는 null을 반환하고 그것을 무시하고, 문제는 아니지만 정말 멋진 해결책은 아니라는 것을 의미한다.

답변

1

FunctionTemplate::New()return 유형이 Handle<Value>InvocationCallback을 예상하기 때문에 오류입니다.

그래서, 당신은 return 뭔가해야하지만, 단순히 Undefined() 될 수 있습니다

Handle<Value> MyObject::something(const Arguments& args) { 
    HandleScope scope; 
    return scope.Close(Undefined()); 
} 

이 만드는 것이 상당 :이

function something() {} 

암시 return; (또는 return undefined;) .

+0

설명해 주셔서 감사합니다. – baam