MATLAB - 枚举 - 不能在其枚举块之外调用"X"的构造函数



我正在尝试创建这样的枚举:

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
>> 

希望有帮助!

最新更新