在matlab中动态创建类

jml*_*pez 6 oop matlab

给定一个结构,有没有办法在MATLAB中创建一个类?举个例子

>> p = struct(); p.x = 0; p.y = 0;
>> p

p = 

    x: 0
    y: 0

>> name = 'Point'

name =

Point
Run Code Online (Sandbox Code Playgroud)

我想做的是,给出一个包含类名称的字符串和一个包含我想要创建类的字段的结构,而不必编写明确写入定义的文件.

现在,如果我们使用,class(p)我们将获得struct.我想要做的是创建一个类型的对象,Point这样当我这样做时,class(obj)我得到Point.

除了在MATLAB中使用类定义编写文件然后执行它之外,有什么想法可以实现这个目的吗?

Jon*_*nas 4

要么你有与类相关的特定功能(方法),Point而不是类Line,在这种情况下你应该手动写出类,无论如何,或者你可以创建一个dynamicprops可以动态创建属性的类,除非你确实需要调用名为 的方法class,通过调用可以大大简化您的生活classname

classdef myDynamicClass < dynamicprops
properties (Hidden)
myClass %# this stores the class name
end
methods
function obj = myDynamicClass(myClassName,varargin)
%# synopsis: obj = myDynamicClass(myClassName,propertyName,propertyValue,...)
%# myClassName is the name of the class that is returned by 'classname(obj)'
%# propertyName/propertyValue define the dynamic properties

obj.myClass = myClassName;

for i=1:2:length(varargin)
addprop(obj,varargin{i})
obj.(varargin{i}) = varargin{i+1};
end
end

function out = classname(obj)
out = obj.myClass;
end

end 
end
Run Code Online (Sandbox Code Playgroud)