Я прочитал учебник «Написание собственных расширений Node.js»: https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native-extensions
Код работал нормально (https://github.com/pquerna/node-extension-examples/blob/master/helloworld/helloworld.cc)
Теперь я хочу изменить:
class HelloWorld: ObjectWrap
{
private:
int m_count;
public:
(...)
HelloWorld() :
m_count(0)
{
}
(...)
static Handle<Value> Hello(const Arguments& args)
{
HandleScope scope;
HelloWorld* hw = ObjectWrap::Unwrap<HelloWorld>(args.This());
hw->m_count++;
Local<String> result = String::New("Hello World");
return scope.Close(result);
}
(...)
}
на что-то подобное (скопируйте параметр в конструкторе и верните его в «Hello ()»):
class HelloWorld: ObjectWrap
{
private:
Local< Value > myval;/* <===================== */
public:
(...)
HelloWorld(const Local< Value >& v) :
myval(v) /* <===================== */
{
}
(...)
static Handle<Value> Hello(const Arguments& args)
{
HandleScope scope;
HelloWorld* hw = ObjectWrap::Unwrap<HelloWorld>(args.This());
return scope.Close(hw->myval);/* <===================== */
}
(...)
}
мой код не работает,Похоже, что hello () возвращает целое число
var h=require("helloworld");
var H=new h.HelloWorld("test");
console.log(H.hello());
Как правильно копировать myval в конструктор и возвращать myval в функцию 'Hello ()'?И нужно ли мне что-то управлять в деструкторе?
Спасибо.
Пьер