2013-04-20 157 views
1

我想在另一个类系统in MATLAB. The class Cell`是创建一个类Cell的对象的数组:在另一个类中创建一个类的对象的数组MATLAB

classdef Cell 
properties 
    ID; 
    EntityID; 
    ZoneID; 
    NeighborID; 
    State; 
    nextChangeTime; 
end 

methods 
% Define the constructor 
    function obj = Cell() 
     obj.ID = zeros(1); 
     obj.EntityID = zeros(1); 
     obj.ZoneID = zeros(1); 
     obj.NeighborID = zeros(1); 
     obj.State = zeros(1); 
     obj.nextChangeTime = zeros(1); 
    end 
end 

现在我有另一个类System。我尽量让Cell对象的数组,像这样:

classdef System 
    properties 
    Cells; 
    end 

    methods 
    function obj = System(dimx,dimy) 
     obj.Cells(dimx,dimy) = Cell(); 
    end 
    end 

但我认为我使用的格式不正确。不知道这是否可能。任何建议如何做到这一点将不胜感激。

回答

2

为了能够创建用户定义类的对象数组(例如Cell类),为用户定义的类提供默认构造函数很方便。缺省构造函数是不带参数的构造函数(即nargin==0)。创建数组时,数组对象的隐式初始化由该构造函数完成。如果缺少这个构造函数,试图通过“扩展”标量对象来构建数组将会产生错误。

另一种创建对象数组(不定义默认构造函数)的方法是使用horzcat,vertcatcat

Aaaaand ...访问对象的属性时,不要忘记提及的对象,你要访问:

obj.Cells = Cell.empty(0,0); % Force the type of empty Cells to Cell class 
obj.Cells(dimx,dimy) = Cell(); 
+0

所以我必须定义一个单元格默认构造函数。但是,当我尝试执行语句'obj.Cells(dimx,dimy)= Cell();'它说转换为单元格的倍数是不可能的。 – Nitin 2013-04-20 20:34:00

+0

我调整了代码,请再看看我的帖子。显然,空属性的默认类型是双精度型。我们需要将其更改为Cell。 – 2013-04-20 20:49:44

+0

谢谢。现在工作! – Nitin 2013-04-20 21:03:50