如何使用 SLB(Simple Lua Binder)将 Lua 函数存储到 C++ 中?

我需要使用库“Simple Lua Binder”存储一个Lua函数。

typedef ? TLuaFunction;

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

    void ExecuteCallback()
    {
        f();    // 调用 Lua 函数
    }

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 );

// 结果是
> "Callback executed"

我不知道在 SLB 库中是否有一个我可以放在“?”之前的类型。

或者我是否必须以不同的方式处理这些事情。

点赞