所以这个问题困扰了我很多天。 我没有留下建议的解决方案,但没有工作。 为了简化问题,在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:木屐()
打印(的ToString(xa.x))
我收到以下错误:
找不到匹配的超载,候选人: A * getA(B&amp;)
我试图修改typeid.hpp,如下所示: Calling C++ member function from Luabind causes "No matching overload found" 但没解决我的问题。