如何创建一个容器类,而不是能够调用所有类函数并将它们应用于所有包含的对象?

时间:2018-01-12 16:12:33

标签: matlab oop

我有一个班级' classB'包含classA的多个对象作为属性。 classB包含与classA相同的方法,但将它们应用于它包含的所有ClassA对象。有没有办法在单个classB函数中执行此操作,而不是使用for循环添加它们?

classdef ClassB
    properties
         ClassAObj{1:3} %cell containing multiple class A objects
    end
    methods
        function function1(ClassB)
             for k = 1:numel(ClassAObj)
                 obj.ClassAObj{k}.function1 
             end
        end
        function function2(ClassB)
             for k = 1:numel(ClassAObj)
                 obj.ClassAObj{k}.function2 
             end
        end
        function...        
    end
end


classdef ClassA
    methods
        function1
        function2
        function...
    end
end

1 个答案:

答案 0 :(得分:0)

执行以下行将把给定函数应用于obj.ClassAObj中的所有对象,其中obj是一个classB对象。

obj.SuperFunction(@function1)


classdef ClassB
    properties
        ClassAObj{1:3} %cell containing multiple class A objects
    end
    methods
        function obj = ClassB
            %constructor loading ClassA objects
            ...
        end
        function Superfunction(obj,ClassAfunctionName)
            cellfun(ClassAfunctionName,obj.ClassAObj)                 
        end      
    end
end