我正在使用我稱爲「PathObj_Standard」的自定義類。我想確保當我加載這個類時,如果屬性CalcDate被保存爲一個單元格數組,它將被轉換爲一個標準數組。不過,我前一段時間改變了類定義,所以當我使用loadobj函數時,我得到的是一個結構而不是一個對象。我使用的原始代碼有更多的屬性,所以我寧願不通過從屬性中將屬性分配給新對象來創建新對象。此外,我還在猶豫是否要將構造函數更改爲接受一個結構作爲參數。在MATLAB loadobj函數中將結構強制轉換爲對象
我嘗試使用loadobj中的類函數,但我得到一個無法調用'clear classes'錯誤時無法重新定義類'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