Find element in heterogeneous object array
18 次查看(过去 30 天)
显示 更早的评论
Hi,
I have a ParentClass subclassing matlab.mixin.Heterogeneous and two SubClasse1 and SubClasse2 subclassing my ParentClass.
I build a heterogeneous array of SubClasse1 and SubClasse2 objects.
How can I find in the array, elements equal to a given object being either SubClasse1 or SubClasse2.
child1 = SubClasse1;
child2 = SubClasse2;
child1 == [child1 child2]
I obtain the following error because of the heterogeneous array :
Unable to call method 'eq' because one or more inputs of class 'ParentClass' are heterogeneous and 'eq' is not sealed. For more details please see the method dispatching rules for heterogeneous arrays.
I tried to look at the method dispatching rules but how to do that for 'eq' ?
Thanks in advance for your help.
1 个评论
Andreas Justin
2024-9-9
编辑:Andreas Justin
2024-9-9
I've solved this implementing the following code in the ParentClass
methods(Sealed, Access=public)
function tf = ne(varargin)
tf = ne@handle(varargin{:});
end
function tf = eq(varargin)
tf = eq@handle(varargin{:});
end
end
采纳的回答
Steven Lord
2023-3-31
Something like this should work.
child1 = SubClasse1;
child2 = SubClasse2;
vectorOfObjects = [child1 child2]
isClass1 = arrayfun(@(x) isa(x, 'SubClasse1'), vectorOfObjects)
allTheSubClasse1Objects = vectorOfObjects(isClass1)
allTheSubClasse2Objects = vectorOfObjects(~isClass1)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Construct and Work with Object Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!