我正在使用一个名为“PathObj_Standard”的自定义类。我想确保在加载此类时,如果属性CalcDate保存为单元格数组,则会将其转换为标准数组。但是,我前一段时间更改了类定义,因此当我使用loadobj函数时,我得到一个结构而不是一个对象。我正在使用的原始代码具有更多属性,因此我宁愿不通过将属性从结构分配给新对象来创建新对象。此外,我也犹豫是否要将构造函数更改为接受struct作为参数。
我尝试在loadobj中使用类函数,但我得到一个无法重新定义类'PathObj_Standard'而不调用'clear classes'错误。这个函数不应该强制将结构转换为对象吗?为什么它在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