1

所以这个麻烦让我困惑了很多天。我没有留下建议的解决方案,但没有工作。为了简化问题,在 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 导致“未找到匹配的重载” ,但没有解决我的问题。

4

0 回答 0