问题描述
|
注意,我已阅读并将答案适用于:从Luabind调用C ++成员函数会导致“找不到匹配的重载”,但这并不能解决我的问题。
我有一个简单的类,我通过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&)
我一直在为此扯头发,看不到我在做什么错。任何人都可以照亮吗? :)
解决方法
在Lua部分,您需要使用冒号(
:
)代替点:
LogManager:registerSource(\"lol\");
您确实意识到全局变量variable5ѭ与类with5ѭ具有相同的名称;这样,您将无法使用枚举常量,例如LogManager.Info
将返回nil。