javascript オブジェクトで C++ クラスの静的メンバー関数を公開するコードは、次のようになります。
tpl->InstanceTemplate()->Set( String::NewSymbol("thefunc"), FunctionTemplate::New(myclass::myfunc)->GetFunction() );
classthefunc
の static メンバーにマップする JavaScript からアクセスできる関数の名前はどこにありますか。myfunc
myclass
メソッドは静的であるため、何らかのインスタンス ポインターを介してすべてのクラス インスタンス メンバーにアクセスし、それに到達するためのボイラープレート コードを記述する必要があります。例えば:
static Handle<Value> myclass::myfunc( const Arguments &args )
{
myclass *instance = Unwrap<myclass>( args.This() );
// now use 'instance' like 'this'
return True();
}
インターフェイスにメンバー関数を設定し、それをクラス インスタンスにバインドして、ボイラープレートを使用した静的関数を回避し、システムを非静的メソッドに直接呼び出して、「this」ポインターを使用できるようにすることが可能かどうかを知りたいです。
#define
「this」をアンラップし、メンバー関数へのすべての呼び出しを転送するプロキシ関数を含むテンプレート クラスに展開することを含む醜い方法を考えることができます。これにより、次のようなセットアップ コードが生成されます。
DECLARE_MEMBER_FUNCTION( thefunc_handle, myclass, myfunc );
tpl->InstanceTemplate()->Set( String::NewSymbol("thefunc"), thefunc_handle );
しかし、Node.js はすでにこれをサポートしているか、誰かがより良い解決策を考案したようです。