У меня есть следующие классы и я хочу связать A :: getA и A :: getPt. Единственное различие между этими двумя функциями состоит в том, что одна принимает в качестве параметра ссылку на int, а другая — на класс «Point».
#include <emscripten/bind.h>
using namespace emscripten;
class Point
{
public:
float x, y, z;
};
class A
{
public:
void getA(int &aa) const;
void getPt(Point &pt) const;
private:
int m_a;
Point m_pt;
};
void A::getA(int &a) const
{
a = m_a;
}
void A::getPt(Point &pt) const
{
pt = m_pt;
}
EMSCRIPTEN_BINDINGS(my_class_example) {
class_<A>("A")
.function("getA", & A::getA)
.function("getPt", & A::getPt);
}
Но когда я компилирую, привязка к A :: getPt работает, но не для A :: getA, где у меня появляется следующая ошибка:
неконстантная ссылка lvalue на тип int не может привязываться к временному
типа ‘int’
внутренний :: BindingType :: fromWireType (арг) …
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Почему он работает с классом, а не с базовым типом?
Потому что в JavaScript нет примитивов call by reference.
var a = 0;
object.getA(a);
// Always a === 0
Других решений пока нет …