1

別のクラスのクラスのオブジェクトの配列を作成しようとしていますCellSystem in MATLAB. The classCell` は次のとおりです。

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

今、私は別のクラスを持っていますSystemCell次のようなオブジェクトの配列を作成しようとしています。

classdef System
  properties
    Cells;
  end

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

しかし、私は間違ったフォーマットを使用していると思います。これが可能かどうかはわかりません。これを達成する方法についての提案をいただければ幸いです。

4

1 に答える 1

2

ユーザー定義クラス (クラスなど) のオブジェクトの配列を作成できるようにするには、ユーザー定義クラスCellのデフォルト コンストラクターを使用すると便利です。デフォルトのコンストラクターは、引数を取らないコンストラクターです (つまり when nargin==0)。配列を作成するとき、配列のオブジェクトの暗黙的な初期化はこのコンストラクターによって行われます。このコンストラクターがない場合、スカラー オブジェクトを「拡張」して配列を作成しようとすると、エラーが発生します。

(既定のコンストラクターを定義せずに) オブジェクトの配列を作成する別の方法はhorzcatvertcatとを使用することですcat

ああ、そして...オブジェクトのプロパティにアクセスするときは、アクセスしているオブジェクトに言及することを忘れないでください:

obj.Cells = Cell.empty(0,0);  % Force the type of empty Cells to Cell class
obj.Cells(dimx,dimy) = Cell();
于 2013-04-20T20:19:54.890 に答える