Luabind:“找不到匹配的超载,候选人:”

时间:2011-05-27 12:21:44

标签: c++ lua luabind

请注意,我已阅读并将答案应用于:Calling C++ member function from Luabind causes "No matching overload found",但这并未解决我的问题。

我有一个简单的类,我通过luabind向LUA公开

这是绑定代码:

void LogManager::luaBindImpl() const
{
    using namespace luabind;
    lua_State* state(Supervisor::getSingleton().getManager<LuaManager>()->state());

    // LogManager
    module(state)
    [
        class_<LogManager>("LogManager")
        .enum_("LogType")
        [
             value("Info", 1)
            ,value("Warning", 2)
            ,value("Critical", 3)
            ,value("Debug", 4)
        ]
        .def("log", &LogManager::log)
        .def("registerSource", &LogManager::registerSource)
    ];

    // Add to globals
    globals(state)["LogManager"] = this;
};  // eo luaBindImpl

这是我的LUA:

LogManager.registerSource("lol");

但是我收到标题中提到的错误(这直接来自我的日志文件):

00:00:00:0520- lua:Exception - No matching overload found, candidates:
void registerSource(LogManager&,std::string const&)

我一直在梳理我的头发,看不出我做错了什么。谁能摆脱任何光明?! :)

1 个答案:

答案 0 :(得分:2)

在Lua部分,您需要使用冒号(:)而不是点:

LogManager:registerSource("lol");

您确实意识到全局变量LogManager与类LogManager具有相同的名称;那样你将无法使用枚举常量,例如: LogManager.Info将返回零。