在另一个类 MATLAB 中创建一个类的对象数组
Posted
技术标签:
【中文标题】在另一个类 MATLAB 中创建一个类的对象数组【英文标题】:create array of objects of a class in another class MATLAB 【发布时间】:2013-04-20 20:06:10 【问题描述】:我正在尝试在另一个类 Systemin MATLAB. The class
Cell 中创建一个类 Cell
的对象数组:
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
但我认为我使用了错误的格式。不确定这是否可能。任何有关如何实现此目的的建议将不胜感激。
【问题讨论】:
【参考方案1】:为了能够创建用户定义类的对象数组(例如Cell
类),为用户定义类提供默认构造函数很方便。默认构造函数是不带参数的构造函数(即当nargin==0
时)。创建数组时,数组对象的隐式初始化由这个构造函数完成。如果缺少此构造函数,尝试通过“扩展”标量对象来构建数组将产生错误。
另一种创建对象数组(不定义默认构造函数)的方法是使用horzcat
、vertcat
和cat
。
Aaaaand...访问对象的属性时,不要忘记提及您正在访问的对象:
obj.Cells = Cell.empty(0,0); % Force the type of empty Cells to Cell class
obj.Cells(dimx,dimy) = Cell();
【讨论】:
所以我定义了 Cell 的默认构造函数。但是当我尝试执行语句obj.Cells(dimx,dimy) = Cell();
时,它说从 Cell 转换为 double 是不可能的。
我调整了代码,请再次查看我的帖子。显然,空属性的默认类型是 double。我们需要将其更改为 Cell。以上是关于在另一个类 MATLAB 中创建一个类的对象数组的主要内容,如果未能解决你的问题,请参考以下文章
C#winform中为啥一个窗体的对象可以调用在另一个窗体中创建的一个类未实例化下