Indexing lua/luabind-通过lua添加和覆盖类方法
我将Lua5.2.2与luabind 0.9一起使用 <>我希望能够通过Lua为我在C++中绑定的任何类添加其他类方法,但我不确定如何去做。 问题是luabind使用函数作为任何绑定类的_index-metamethod,而不是表,因此我根本看不到访问类方法的方法 e、 例如,我像这样绑定我的类:Indexing lua/luabind-通过lua添加和覆盖类方法,indexing,lua,meta,luabind,Indexing,Lua,Meta,Luabind,我将Lua5.2.2与luabind 0.9一起使用 我希望能够通过Lua为我在C++中绑定的任何类添加其他类方法,但我不确定如何去做。 问题是luabind使用函数作为任何绑定类的_index-metamethod,而不是表,因此我根本看不到访问类方法的方法 e、 例如,我像这样绑定我的类: luabind::module(lua) [ luabind::class_<testClass>("TestClass") .def(luabind::constructor
luabind::module(lua)
[
luabind::class_<testClass>("TestClass")
.def(luabind::constructor<>())
.def("TestFunc",&TestFunc)
];
//Class
class FunctionCaller
{
public:
luabind::object Fn;
void SetFn(luabind::object NewFn)
{
Fn = NewFn;
};
luabind::object GetFn()
{
return Fn;
};
};
//Binding Code
luabind::class_<FunctionCaller>("FunctionCaller")
.def(luabind::constructor<>())
.property("Fn", &FunctionCaller::Fn, &FunctionCaller::SetFn, &FunctionCaller::GetFn)
任何帮助都将不胜感激。您可以使用luabind::object属性并使用luabind的.property方法注册它 大概是这样的:
luabind::module(lua)
[
luabind::class_<testClass>("TestClass")
.def(luabind::constructor<>())
.def("TestFunc",&TestFunc)
];
//Class
class FunctionCaller
{
public:
luabind::object Fn;
void SetFn(luabind::object NewFn)
{
Fn = NewFn;
};
luabind::object GetFn()
{
return Fn;
};
};
//Binding Code
luabind::class_<FunctionCaller>("FunctionCaller")
.def(luabind::constructor<>())
.property("Fn", &FunctionCaller::Fn, &FunctionCaller::SetFn, &FunctionCaller::GetFn)
//类
类函数调用者
{
公众:
luabind::对象Fn;
void SetFn(luabind::object NewFn)
{
Fn=NewFn;
};
luabind::对象GetFn()
{
返回Fn;
};
};
//绑定代码
luabind::类_u3;(“函数调用方”)
.def(luabind::constructor())
.property(“Fn”,&FunctionCaller::Fn,&FunctionCaller::SetFn,&FunctionCaller::GetFn)
然后您只需要根据luabind文档调用luabind::对象
这并不完全是你想要做的,但我认为它可以帮助你覆盖函数。您可以绑定实函数并拥有一个属性,检查luabind::object是否为非null,然后调用它或本机函数