使用mexCallMATLAB(nlhs, plhs, nrhs, prhs, "foo")
命令,我们可以调用一个函数(这里是“foo.m”),这是在MATLAB中用C ++编写的。
但是如果“foo”是一个类的方法呢?
classdef Foo < handle
...
function out = foo(obj, in)
...
end
end
从C ++调用MATLAB类成员函数是否有任何直接或技巧?
答案 0 :(得分:1)
在MATLAB中,您可以像任何其他函数一样调用类方法:
obj.method
与
相同method(obj)
您可以使用mexCallMATLAB
轻松地在MEX文件中创建类似的来电。如果prhs
中的任何数组的类型为Foo
,则MATLAB将首先在该类中查找函数&#39;方法
所以对于OP的例子:
mxArray rhs = <mxArray of type Foo>;
mcArray los;
mexCallMATLAB(1, &lhs, 1, &rhs, "foo");
答案 1 :(得分:-1)
Foo对象需要在某处实例化,因此本例中最简单的方法是使foo方法保持静态。
然后,您可以创建一个Matlab包装函数,该函数调用Foo.staticfoo(args)
并使用mexCallMATLAB
调用Matlab包装函数。