Так что эта беда путала меня много дней.
Я не оставил предложенного решения, но не работал.
Чтобы упростить проблему, в 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 следующим образом:
ха = G_B: Гет ()
печать (ToString (xa.x))
Я получаю следующую ошибку:
Соответствующая перегрузка не найдена, кандидаты:
A * getA (B&)
Я попытался пропатчить typeid.hpp как предложено в:
Вызов функции-члена C ++ из Luabind вызывает "Соответствующая перегрузка не найдена"
но не решил мою проблему.
Задача ещё не решена.
Других решений пока нет …