3

我有单例类,我想绑定它以供 lua 使用。我正在使用 SLB(简单 Lua 活页夹)。我真的不知道该怎么做。我所有的想法都行不通。任何人?

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

1 回答 1

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* 或其他东西。

于 2013-10-30T00:01:13.343 回答