请注意,我已阅读并将答案应用于: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&)
我一直在梳理我的头发,看不出我做错了什么。谁能摆脱任何光明?! :)
答案 0 :(得分:2)
在Lua部分,您需要使用冒号(:
)而不是点:
LogManager:registerSource("lol");
您确实意识到全局变量LogManager
与类LogManager
具有相同的名称;那样你将无法使用枚举常量,例如: LogManager.Info
将返回零。