2017-03-10 85 views
1

その列挙ブロックの 'X' の外側のコンストラクタを呼び出すことはできません私はMoleculeTypeからインスタンスを取得しようとすると、"列挙ブロックの外で 'media.MoleculeType'のコンストラクタを呼び出せません。エラー。 私はMoleculeTypeコンストラクタをどこで呼び出そうとしているのか分からないので、私のコードでMoleculeTypeコンストラクタへの参照がないので、このエラーが出ます。MATLAB - - ENUM私はちょうどこのような列挙型を作成しようとしています

私を助けてください。前もって感謝します。

ヒント:前にエラーなしでenumクラスを作成していて、内部にプリミティブな値を持っていました(例:O2(32))。問題は、列挙の中でオブジェクト型を使用しようとすると発生します(この質問のように:O2(media.ElementalComposition))。私はこれをMATLABのドキュメントで検索しましたが、例はありません。ドキュメンテーションは例を提供しておらず、サポートされていないとは言いません。

+0

ここにリンクが見つかりましたhttps://www.mathworks.com/matlabcentral/answers/18997-simulink-enumerationインスタンスを取得しましたか? – Yvon

+0

どのようなインスタンスですか?どういう意味ですか? – ferit

+0

おそらく 'MoleculeType'は他のクラスを見ることができません。すべてが 'public'であることを確認してください。 – Matt

答えて

1

どのようにenumインスタンスを作成しようとしていますか?

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 

:私は、コマンドラインでそれを間違った方法を構築しない限り、私のために、次の作品、 enumの作成/参照

>> MoleculeType % wrong way 
Error using MoleculeType 
Cannot call the constructor of 'MoleculeType' outside of its enumeration block. 

>> MoleculeType.O2 % right way 

ans = 

    O2 

>> 

希望に役立ちます!

関連する問題