在SLB中绑定单例

我有一个单例类,我想将它绑定到 Lua 中使用。我正在使用 SLB(Simple Lua Binder)。我真的不知道如何做到这一点。我所有的想法都不起作用。有人知道吗?

void Logger::export_class_to_lua(SLB::Manager *m) {
    SLB::Class< Logger, SLB::Instance::NoCopyNoDestroy >("Logger",m)
        .set("getInstance",&Logger::getInstance)
        .set("log",&Logger::log)
        .set("info",&Logger::info)
        .set("warning",&Logger::warning)
        .set("error",&Logger::error)
        .set("fatal",&Logger::fatal);
}
点赞
用户1789246
用户1789246

使用你的代码:

void Logger::export_class_to_lua(SLB::Manager *m) {
    SLB::Class< Logger, SLB::Instance::NoCopyNoDestroy >("Logger",m)
        //.set("getInstance",&Logger::getInstance) // OMIT THIS
        .set("log",&Logger::log)
        .set("info",&Logger::info)
        .set("warning",&Logger::warning)
        .set("error",&Logger::error)
        .set("fatal",&Logger::fatal);

    // 接下来我们在LUA中设置全局变量来访问单例对象
    SLB::setGlobal<Logger*>(&(*lua_State), getInstance(), "logger");
}

lua_State 是指向你创建的任何 lua_State 的指针。 “logger”是你在LUA中用于访问单例模式的对象/类/变量的名称。

例如,在LUA中你可以这样写:

logger:log("Logging some information.")
logger:error("An error has occured.")

假设你的log和error函数是需要 const char* 或其他参数的函数。

2013-10-30 00:01:13