私はこれを説明するように私と一緒に裸。ラップされたC++オブジェクトをJavascriptコールバックに渡すにはどうすればよいですか?
私はNode.jsモジュールをC++で記述しようとしています。このモジュールは、いくつかのクラスをラップして公開しています。libhdf5からです。
私は現在、libhdf5の2つのクラスに興味があります。最初のファイルはFile
で、hdf5ファイルが開きます。 2番目のファイルはGroup
で、そのファイル内のグループを表します。 FileオブジェクトからGroupオブジェクトを取得します。
私はFile
オブジェクトを作成し、それからGroup
を取得しようとするコードを書いています。できるだけJavascriptyとしてNode.jsモジュールを作成しようとしているので、コールバックを使用してグループを返す必要があります。それを
var hdf5 = require('hdf5');
var file = new hdf5.File('/tmp/example.h5');
file.getGroup('foobar', function (err, group) { console.log(group); });
ので、C++のコードで私のFile
ラッパーのために私はここにgetGroup
関数にマップする機能を持っているだろう、と。だから、私は、それがこのように使われているように、私のモジュールをコーディングしようとしています指定された無名関数を呼び出して、エラーと同様に新しいGroup
オブジェクトラッパーを渡します。
Node.jsのドキュメントに表示されているように、factory of wrapped objectsが表示されていることを考えれば、そこにある例の後にGroup
というコードをモデル化しました。
私はGroup
ラッパーをコード化しましたが、インスタンス化しようとしていません。関数のパラメータにv8 Arguments
クラスを使用することからどのように離れていくかをまだ分かりません。そのため、v8の永続コンストラクタ関数に必要なパラメータを渡すことができないようです(JS-LandではなくC++からインスタンス化しているためです)。
誰かがmy code for libhdf5を見て、これを達成する方法について私に指摘してもらえますか?私はほとんどそこにいるように感じますが、私はちょうど何かを見逃しています。ここで
は、コンストラクタ関数で、私のGroup
ラッパーで強調表示:行は、私は引数として、私のパラメータを渡す必要があるだろうどこhightlighted(またはそれは私がする必要があるということです何でここhttps://github.com/ryancole/node-hdf5/blob/master/src/h5_group.cc#L57-72
は、私のFile
ラッパーです仕事に、このためにこれを変更:https://github.com/ryancole/node-hdf5/blob/master/src/h5_file.cc#L110
事前のおかげで、テキストのこの壁を読み取るための感謝を:)
をそれはあなたが別のクラスのインスタンスを返すためにファクトリメソッド( '・グループ:: Instantiate')を必要とするということです? – ZachB