2

LuaBridge を使用して、いくつかのクラスと関数を Lua に移植します。私は現在デバッグ中であり、常に取得します

main.lua:1: attempt to call method 'new' (a nil value)

これは main.lua です:

v = TexVector:new( 1, 2 )
v.X = 0
v.Y = 0
print( v.X, v.Y ) -- print and explicit binded functions work

これは、TexVector の初期化コードです。

luabridge::getGlobalNamespace( L ).
    beginClass< Cheap::Math::TexVector >( "TexVector" ).
        addConstructor< void (*) ( ) >( ).
        addConstructor< void (*) ( const double& , const double& ) >( ).
        addData( "X", &Cheap::Math::TexVector::X ).
        addData( "Y", &Cheap::Math::TexVector::Y ).
        addFunction( "Add", &Cheap::Math::TexVector::Add ).
        addFunction( "Sub", &Cheap::Math::TexVector::Sub ).
        addFunction( "Mul", &Cheap::Math::TexVector::Mul ).
        addFunction( "Div", &Cheap::Math::TexVector::Div ).
        addFunction( "Eq", &Cheap::Math::TexVector::Eq ).
        addFunction( "Apply", &Cheap::Math::TexVector::Apply ).
    endClass( );

私の知る限り、Luaの「クラス」の新しいコンストラクター関数です。初期化または Lua スクリプトに何か問題がありますか?

4

2 に答える 2

6

LuaBridge は 1 つのコンストラクターのみをサポートします。ニコル・ボーラスが示唆しているように、 :new などの複数の名前付き静的コンストラクターを持つことを止めません。

于 2012-09-04T08:41:32.653 に答える
2

初期化には.operatorを使用し、コンストラクターを1つだけ登録する必要がありました。

于 2012-09-03T04:07:39.223 に答える