绑定功能与Emscripten中的参考参数

时间:2017-12-06 13:09:28

标签: c++ emscripten webassembly

我有以下类,想要绑定A :: getA和A :: getPt。这两个函数之间的唯一区别是,一个参数作为参数作为参数,另一个参考作为"点"类。

#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没有,我有以下错误:

  

非常量左值引用类型&#39; int&#39;无法绑定到临时   类型&#39; int&#39;                    内部:: BindingType :: fromWireType(参数)...                    ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

为什么它使用类而不是基本类型?

1 个答案:

答案 0 :(得分:0)

因为JavaScript没有通过引用原语参数调用。

var a = 0;
object.getA(a);
// Always a === 0