MEX/Matlab:访问另一个对象的成员objectarray
我有以下Matlab类设计:MEX/Matlab:访问另一个对象的成员objectarray,c,matlab,oop,mex,C,Matlab,Oop,Mex,我有以下Matlab类设计: classdef foo properties a; b; end methods function obj = myFun(obj) obj.a = 42; // some calculation takes place here end end end classdef bar properties foos; //
classdef foo
properties
a;
b;
end
methods
function obj = myFun(obj)
obj.a = 42; // some calculation takes place here
end
end
end
classdef bar
properties
foos; // this is going to be an array of foos
otherStuff;
end
methods
function obj = someFun(obj)
for i = 1:length(foos)
obj.foos(i) = obj.foos(i).myFun;
end
end
end
end
正如我所写的,一个对象将有一个其他对象的数组作为其类属性
我试图将其重写为C代码,并与MEX一起使用。我现在的问题是:如何访问数组foos的不同元素?
我知道API函数mxGetProperty。使用此函数,我可以访问每个数组项的属性,例如obj.foosi.a,但不能访问我希望具有obj.foosi的对象作为一个整体。但是,我需要将整个对象作为mxArray*来调用成员函数
有什么办法吗
谢谢在调用mxGetProperty获取对象数组后,最好调用MATLAB对该对象数组进行索引。如果bar_mx是bar对象的mxArray,则
foos_prop = mxGetProperty(bar_mx, 0, "foos"); // Gives foos property
foos_i = mexCallMATLAB( ... [foos_prop, i]) call MATLAB function to get i'th foo
您可以将对第i个对象的调用与对该对象的方法的调用结合起来。如果你想在C++中做索引,你可能需要调用函数。使用mexCallMATLAB而不是为subsref创建struct参数更容易。没有直接的MEX函数来提取对象数组的元素。您可以在MATLAB中编写一个帮助函数来实现这一点,并从MEX函数中调用此函数。