我正在尝试创建这样的枚举:
classdef MoleculeType < media.Molecule
enumeration
O2 (media.ElementalComposition(media.Atom(media.AtomicWeight.Oxygen), int32(2)))
end
end
继承分子类:
classdef Molecule < handle
properties(SetAccess = immutable)
chemicalComposition
end
...
methods
function obj = Molecule(composition)
obj.chemicalComposition = composition;
end
...
end
...
end
当我尝试从MoleculeType获得一个实例时,我获得"在其枚举块之外无法调用'Media.moleculetype'的构造函数。" 错误。我无法弄清楚它试图调用分子型构造函数,因此我会遇到此错误,因为我的代码中没有提及分子型构造函数。
请帮助我。预先感谢。
提示:我以前创建了没有错误的枚举类,并且它们内部具有原始值(例如O2(32)
)。当我尝试在枚举内使用对象类型时(例如在此问题:O2(media.ElementalComposition)
)时会出现问题。我在MATLAB文档中搜索了此内容,没有示例。文档既不提供一个示例,也不说不支持它。
您如何尝试创建枚举实例?以下对我有用,除非我在命令行上以错误的方式构造它:
Molecule.M(简化)
classdef Molecule
properties(SetAccess=immutable)
Composition
end
methods
function m = Molecule(composition)
m.Composition = composition;
end
end
end
moleculetype.m
classdef MoleculeType < Molecule
enumeration
O2 (32)
end
end
创建/引用枚举
>> MoleculeType % wrong way
Error using MoleculeType
Cannot call the constructor of 'MoleculeType' outside of its enumeration block.
>> MoleculeType.O2 % right way
ans =
O2
>>
希望有帮助!