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()'的方式將容器的地址傳遞給構造函數。最後,調用構造函數時,它會更改容器的值。 –