2017-07-03 6 views
1

私は単純な仮想マシンを作っています。私はInstructionsと呼ばれる列挙型を持っています。私のテストクラスで整数の列挙体の配列

public enum Instructions : int { 
    ADD = 1, 
    SUB = 2, 
    PUSH = 3, 
    POP = 4, 
    HALT = 5 
} 

私はInstructions列挙型の配列を作成し、私は以下のようにその配列にintを使用したいです。

Instructions[] code = new Instructions[] { 
    PUSH, 2, 
    PUSH, 7, 
    ADD, 
    POP, 
    HALT 
}; 

私の目標は上記の手順をすべて読み、それを処理することです。例えば、上記のコードでは、2と7をスタックにプッシュし、それらを一緒に追加してスタックのトップをポップする必要があります。

intリテラルでエラーが表示されますが、それはエラーメッセージです。

Cannot implicity convert 'int' to 'Vm.Instructions'. An explicit conversion exists (are you missing a cast?) 

どのように私は私のInstructions配列のintリテラルを使用することができますか?

+0

2と7とは何ですか? –

+0

それらを一緒に加算するための単なる定数。 – Stradivarius

+0

エラーヒントと同じように、数字をキャストする必要があります。 '2'はあなたの指示の' SUB'と同じなので、あなたは何かを解析しようとしています。 – TyCobb

答えて

1

2および7はInstructionsタイプではないため、Instructions[]アレイに入れることはできません。整数配列が必要です。

+0

それを 'Instructions'にキャストしてください。 @KennethK。 –

+0

。キャストも失敗するでしょう... – imlokesh

+2

いいえ、それはできません。 –