gpt4 book ai didi

c - 墨西哥/Matlab : Accessing objectarray which is a member of another object

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:14 25 4
gpt4 key购买 nike

我有以下 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; // 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 一起使用。我现在的问题是:如何访问数组 foo 的不同元素?我知道 API 函数 mxGetProperty。使用此函数,我可以访问每个数组条目的属性(例如 obj.foos(i).a),但不能访问整个对象(我想要 obj.foos(i) )。但是,我需要整个对象(作为 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++ 中进行索引,您可能需要调用 subsref功能。执行 mexCallMATLAB 而不是为 subsref 创建结构参数更容易。

关于c - 墨西哥/Matlab : Accessing objectarray which is a member of another object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com