luabind - 没有找到匹配的重载,候选项。

这个问题困扰了我好几天。我没有留下解决方案,但都没有起作用。为了简化问题,在luabind中,我尝试导出一个类,其中包含一个返回另一个类对象的函数,例如以下示例:

Class A
{
publicint x;
};
Class B
{
    A m_a;
public:
    A* getA(){return &m_a;}//我对这个函数很好奇
}*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()

print(tostring(xa.x))

我收到以下错误:

未找到匹配的重载,候选者: A* getA(B&)

我已经尝试根据[typeid.hpp提出的建议修改了错误,但是没有解决我的问题。

点赞