3

我希望能够实例化 C++ 类的实例并将其作为参数传递给 JavaScript 回调。该类继承自ObjectWrap,可用于 Node.js 并在其中使用。

如果所述实例来自 JavaScript,我可以将同一类的实例传递给回调。

这是我需要做的一个基本示例:

MyClass *instance = new MyClass();

// If was passed as the first param to this method, commit is set as below, this code works.
// MyClass *instance = ObjectWrap::Unwrap<MyClass>(args[0]->ToObject());

// Assign some property values to commit
Handle<Value> argv[] = { instance->handle_ };
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);

这不起作用,而是出现段错误。gdb告诉我:

Program received signal EXC_BAD_ACCESS, Could not access memory.

我如何修改我的代码以允许我将我的传递instance给回调?


更新:有问题的课程可以在 Github 上查看:commit.cc

4

1 回答 1

2

答案是我做错了。

正确的代码:

Local<Value> instance = MyClass::constructor_template->NewInstance();

// Assign some property values to commit
Handle<Value> argv[] = { instance };
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);

获取MyClass实例:

MyClass *instanceOfMyClass = ObjectWrap::Unwrap(instance);
于 2013-03-05T19:05:30.357 回答