クラスに編成されたmatlabの既存のコードを使用しています。classdef を使用する代わりに、@folder を使用します。それがどのように機能するのか正確にはわかりませんが、問題が発生しています。
コンストラクターの形式は次のとおりです。
function this = crazy_class(varargin)
this.a = [];
this.b = [];
this = class(this, 'crazy_class');
end
クラスに新しいプロパティを追加する必要がありますが、次のように変更すると:
function this = crazy_class(varargin)
this.a = [];
this.b = [];
this.newProperty = [];
this = class(this, 'crazy_class');
end
私は以下を取得します:
Number of fields for class crazy_class cannot be changed without clear classes.
クラスに新しい未指定のプロパティを追加するのは好きではありません。classdef があれば、新しいプロパティを追加するのは簡単ですが、 @folder 形式でこれを行う方法がわかりません。
クラスのプロパティを指定するフォルダーには、.m ファイル、またはそのためのファイルはありません。私が見つけることができる最も近いものは、オーバーロードされた関数です:
subsasgn.m:
this = builtin('subsasgn', this, selector, value);
subsref.m:
r = builtin('subsref', this, selector);
しかし、それだけです。このクラスは、他のファイルで言及されていないときに、有効なプロパティとそうでないものをどのように認識しますか。これを変えるには何を探すべきですか?
編集:これは恥ずかしいです... Matlabを再起動したところ、すべて正常に動作するようになりました。コマンド clear classes または clear all を入力すればうまくいくと思いましたが、完全な再起動が必要だったと思います。