"PathObj_Standard"という名前のカスタム定義クラスで作業しています。私は、このクラスをロードするときに、プロパティCalcDateがセル配列として保存されていれば、それが標準配列に変換されることを確認したいと思います。しかし、以前はクラスの定義を変更していましたので、loadobj関数を使用すると、オブジェクトの代わりに構造体が取得されています。私が使用している元のコードは、より多くのプロパティを持っているので、新しいオブジェクトに構造体のプロパティによってプロパティを割り当てることによって、新しいオブジェクトを作成したくないでしょう。さらに、構造体を引数として受け入れるようにコンストラクタを変更することも躊躇しています。MATLAB loadobj関数のstructからオブジェクトへの強制変換
loadobj内のクラス関数を使用しようとしましたが、私はを取得しています。 'クラスクリア'への呼び出しなしで 'PathObj_Standard'クラスを再定義できません。エラー。この関数は構造体をオブジェクトに強制的に変換するものではありませんか?なぜそれがloadobj関数内で動作しないのですか?
classdef PathObj_Standard < handle
properties (SetAccess = protected)
CalcDate;
Name;
end
methods(Static)
function obj=loadobj(s)
if isstruct(s)
obj=class(s,'PathObj_Standard');
else
obj=s;
end
if not(isempty(obj.CalcDate)) && iscell(obj.CalcDate)
obj.CalcDate=cell2mat(obj.CalcDate);
end
end
end
methods
function obj=PathObj_Standard(Name,CalcDate)
obj.Name=Name;
obj.CalcDate=CalcDate;
end
end