在SLB中绑定单例

时间:2013-01-29 13:40:28

标签: c++ lua singleton

我有单例类,我想绑定它以供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);
}

1 个答案:

答案 0 :(得分:1)

使用您的代码执行:

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

    // Next we set global variable within LUA to access the Singleton
    SLB::setGlobal<Logger*>(&(*lua_State), getInstance(), "logger");
}

lua_State将是指向您创建的任何lua_State的指针。 “logger”是您在LUA中用于访问Singleton的对象/类/变量的名称。

所以例如;在LUA内你会这样做:

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

假设你的日志和错误函数采用const char *或其他东西。