Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Lua函数存储到C++;使用SLB(简单Lua活页夹)?_Lua - Fatal编程技术网

如何将Lua函数存储到C++;使用SLB(简单Lua活页夹)?

如何将Lua函数存储到C++;使用SLB(简单Lua活页夹)?,lua,Lua,我需要使用库“Simple Lua Binder”存储Lua函数 typedef?t语言功能; 福班 { 公众: void SetCallback(tluaf函数) { mCallback=f; } void ExecuteCallback() { f();//调用Lua函数 } 私人: tLualback函数; }; //管理器初始化 SLB::管理器scriptManager; //SetCallback注册到lua SLB::类(“Foo”和脚本管理器) .constructor() .s

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

typedef?t语言功能;
福班
{
公众:
void SetCallback(tluaf函数)
{
mCallback=f;
}
void ExecuteCallback()
{
f();//调用Lua函数
}
私人:
tLualback函数;
};
//管理器初始化
SLB::管理器scriptManager;
//SetCallback注册到lua
SLB::类(“Foo”和脚本管理器)
.constructor()
.set(“SetCallback”、&Foo::SetCallback)
.set(“ExecuteCallback”,&Foo::ExecuteCallback)
;
字符*luaCode=
“SLB。正在使用(SLB)\n”
“o=Foo()\n”
“o:SetCallback(函数()\n”
“打印('Callback executed')\n”
“结束\n”
“”\n“
“o:ExecuteCallback()\n”;
SLB::脚本(脚本管理器和脚本管理器);
脚本.doString(luaCode);
//结果是
>“已执行回调”
我不知道SLB库中是否有一个类型可以替换?(参见代码的第一行)

或者如果我不得不做不同的事情

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"