luabind — не найдена соответствующая перегрузка, кандидаты

Так что эта беда путала меня много дней.
Я не оставил предложенного решения, но не работал.
Чтобы упростить проблему, в 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 вызывает "Соответствующая перегрузка не найдена"
но не решил мою проблему.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]