将Matlab Handle类转换为C ++

时间:2015-05-18 09:27:16

标签: c++ matlab

我在Matlab中有一个句柄类,我希望能够在C ++中使用它。 我已经学会here我不能生成一个C ++类,但必须用函数包装我的类。 另一个问题中的示例仅显示在包装函数中使用一个成员函数。但是,我需要能够调用我班级的几个成员函数。

由于我无法将我的类实例传递给包装函数as per the Matlab documentation,因此我没有看到在同一对象上运行多个函数的方法。

不可能这样做吗?

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

  

我没有看到让多个函数对同一个对象进行操作的方法。

为什么不呢?您只需使用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可以更改为您想要的任何课程。