用emscripten中的参考参数绑定函数

Binding functions with reference parameters in Emscripten

本文关键字:参数 绑定 函数 参考 emscripten      更新时间:2023-10-16

我有以下类,想绑定:: geta and a :: :: getpt。这两个函数之间的唯一区别是,一个作为参数作为int的引用,另一个参考"点"类引用。

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

非const lvAlue引用" int"类型不能结合到临时 类型的" int" 内部:: bindingtype :: frofwiretype(args)... ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>

为什么它可以与类一起使用,而不是基本类型?

因为JavaScript没有参考原始参数的调用。

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