0
最近,我正在使用JavaScript中的C++函数,并且选择了nodejs的ffi插件。但我不知道如何编写JS中C++类构造函数的返回类型。使用C++构造函数时ffi的返回类型
我的C++代码看起来像这样
//definition of a class
class Rectangle {
private:
int width, height;
public:
Rectangle (int,int);
int area();
int perimeter();
};
//definition of member functions
Rectangle::Rectangle (int a, int b) {
width = a;
height = b;
}
int Rectangle::area() {
return width * height;
}
int Rectangle::perimeter() {
return 2 * width + 2 * height;
}
我的js代码看起来像这样
//'use strict';
var ref = require('ref');
var ffi = require('ffi');
var Struct = require('ref-struct');
//define types
var RectangleType = Struct({
'x': 'int',
'y': 'int'
});
var RectanglePtrType = ref.refType(RectangleType);
var hw = ffi.Library('../build/libnotemplateLib', {
Rectangle:[/*what should I write here*/, ['int','int']]
});
console.log(hw.Rectangle(3,4));
我试图使用结构 “RectangleType” 和指针 “RectanglePtrType”,但它们都会导致类型错误。我在google中发现的所有结果都是关于LuaJIT,但不是nodejs。
如果在Js中没有可用于C++构造函数的返回类型,那么我有可能在JS中创建一个Rectangle对象吗?
“编写一个C++类构造函数的返回类型“不存在构造函数的返回值。 – Rakete1111
我看到我的教授做到了。我记得他首先将一个RectangleType结构作为一个容器,然后使用类似'ref()'的方式将容器的地址传递给构造函数。最后,调用构造函数时,它会更改容器的值。 –