"PathObj_Standard"라는 사용자 정의 클래스를 사용하고 있습니다. 이 클래스를로드 할 때 CalcDate 속성을 셀 배열로 저장하면 표준 배열로 변환됩니다. 그러나 얼마 전 클래스 정의를 변경 했으므로 loadobj 함수를 사용하면 객체 대신 구조체가 생성됩니다. 내가 사용하고있는 원래 코드는 훨씬 더 많은 속성을 가지고 있으므로 구조체의 속성을 새 개체에 할당하여 새 개체를 만들지는 않을 것입니다. 또한 struct를 인수로 받아들이도록 생성자를 변경하는 것을 주저합니다.구조체를 MATLAB loadobj 함수에서 객체로 강제 변환
클래스 함수를 사용하여 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