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
C++ SLB中的绑定单态_C++_Lua_Singleton - Fatal编程技术网

C++ SLB中的绑定单态

C++ SLB中的绑定单态,c++,lua,singleton,C++,Lua,Singleton,我有一个singleton类,我想绑定它供lua使用。我正在使用SLB(简单Lua活页夹)。我真的不知道怎么做。我所有的想法都行不通。有人吗 void Logger::export_class_to_lua(SLB::Manager *m) { SLB::Class< Logger, SLB::Instance::NoCopyNoDestroy >("Logger",m) .set("getInstance",&Logger::getInstance)

我有一个singleton类,我想绑定它供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);
}
void记录器::将类导出到lua(SLB::Manager*m){
SLB::Class(“Logger”,m)
.set(“getInstance”,&Logger::getInstance)
.set(“日志”,&Logger::log)
.set(“info”、&Logger::info)
.set(“警告”、&Logger::警告)
.set(“错误”,&Logger::错误)
.set(“致命的”,&Logger::致命的);
}
使用您的代码执行以下操作:

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");
}
假设日志和错误函数采用const char*或其他形式。

.set(“foo”,std::bind(&Logger::foo,Logger::getInstance())
假设
getInstance
返回指针。如果通过引用返回,则获取地址。
logger:log("Logging some information.")
logger:error("An error has occured.")