Main Content

クラスにプロパティを含めない

MATLAB® クラスが、プロパティ myprop をもつハンドル クラスを返すメソッド mymethod をもっている場合、以下のタイプの代入に対してはコードを生成できません。

obj.mymethod().myprop=...

たとえば、以下のクラスを考えます。

classdef MyClass < handle
  properties
    myprop
  end
  methods
    function this = MyClass
      this.myprop = MyClass2;
    end
    function y = mymethod(this)
      y = this.myprop;
    end
  end
end
classdef MyClass2 < handle
  properties
    aa
  end
end

関数 foo に対してコードを生成できません。

function foo
 
h = MyClass;

h.mymethod().aa = 12;
この関数では、h.mymethod() がタイプ MyClass2 のハンドル オブジェクトを返します。MATLAB では、h.mymethod().aa = 12; という代入で、そのオブジェクトのプロパティが変わります。コード生成は、この代入をサポートしていません。

解決法

オブジェクトを返してからそのオブジェクトのプロパティに対して値を代入するようにコードを書き直します。

function foo

h = MyClass;

b=h.mymethod();
b.aa=12;

関連するトピック