我正在使用我称为“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