1

ライブラリ「Simple Lua Binder」を使用してLua関数を格納する必要があります

typedef ? TLuaFunction;

class Foo
{
public:
    void SetCallback( TLuaFunction f )
    {
        mCallback = f;
    }

    void ExecuteCallback()
    {
        f();    // Calls Lua function
    }

private:
    TLuaFunction    mCallback;
};

// Manager initialization
SLB::Manager scriptManager;

// SetCallback registration into lua
SLB::Class<Foo>( "Foo", &scriptManager )
    .constructor()
    .set( "SetCallback", &Foo::SetCallback )
    .set( "ExecuteCallback", &Foo::ExecuteCallback )
    ;

char* luaCode = 
    "SLB.using( SLB )\n"
    "o = Foo()\n"
    "o:SetCallback( function()                          \n"
    "                   print( 'Callback executed' )    \n"
    "               end                                 \n"    
    ")                                                  \n"    
    "o:ExecuteCallback()                                \n";    

SLB::Script script( &scriptManager );
script.doString( luaCode );

// The result is
> "Callback executed"

SLB ライブラリに、代わりに配置できる型があるかどうかわかりません。(コードの最初の行を参照してください)。

または、別のことをしなければならない場合。

4

0 に答える 0