转换Matlab句柄类到c++

Convert Matlab Handle class to C++

本文关键字:c++ 句柄 Matlab 转换      更新时间:2023-10-16

我在Matlab中有一个句柄类,我希望能够在c++中使用。我在这里已经了解到,我不能仅仅生成一个c++类,而必须用函数包装我的类。另一个问题中的示例仅展示了在包装器函数中使用一个成员函数。但是,我需要能够调用类的几个成员函数。

由于我不能按照Matlab文档将我的类实例传递给包装器函数,因此我看不到有几个函数在同一对象上操作的方法。

这是不可能的吗?

不能将类作为生成代码的主函数的输入和输出。但是你可以从你的主函数中调用任意数量的子函数,这些子函数可以把对象作为输入。对象通常是从主函数创建的,然后传递给子函数。然后使用代码根"主函数名"生成代码。生成的代码包含所有子函数。

您还应该在子函数中使用coder.inline('never'),以便它们在生成的代码中显示为单独的函数。

我看不出有什么办法让几个函数操作同一个对象。

为什么不呢?您可以使用pointer作为输入参数。

int main() {
  int myarr[5] = {1, 2, 3, 4, 5};
  double myval1, myval2;
  myval = myfun1(myarr, 100);  // myarr is unchanged
  myfun2(&myarr, 200);         // myarr now has new values
  return 0;
}
double myfun1(int *arr, int para1) {
// @TODO1
}
void myfun2(int *arr, int para2) {
// @TODO2: here you can change value of *arr which is returned back to the calling function
}

myarr可以更改为您想要的任何类