所以这个麻烦让我困惑了很多天。我没有留下建议的解决方案,但没有工作。为了简化问题,在 luabind 中,我尝试导出一个类,该类具有从另一个类返回对象的函数,如下例所示:
class A
{
public:
int x;
};
class B
{
A m_a;
public:
A* getA(){return &m_a;} // I am curious about this function
}*g_b=new B();
和导出的模块:
void ExportToLua(lua_State* L)
{
module(L)[
class_<A>("A")
.def(constructor<>())
.def_readwrite("x",&A::x)
,
class_<B>("B")
.def(constructor<>())
.def("getA",(A*(B::*)())&B::getA)
];
luabind::globals(L)["g_B"]=boost::ref(g_b);
}
简单明了,现在当我调用lua脚本如下:
xa=g_B:getA()
打印(tostring(xa.x))
我收到以下错误:
未找到匹配的重载,候选:A* getA(B&)
我已尝试按照以下建议修补 typeid.hpp: Calling C++ member function from Luabind 导致“未找到匹配的重载” ,但没有解决我的问题。