1

選択入力に MT4 列挙を使用しています。

enum ENUM_myChoice{ 
     a, b, c, e, f, g
     };

問題はd、リストに " " をアルファベット順に追加する必要がある場合、または
を使用しているすべてのテンプレートが 1 ずれているために台無しになることです。efg

これに対するエレガントな解決策はありますか、それともブルートフォースだけですか?

前もって感謝します

4

1 に答える 1

0

MQL4enum anEnumNAME{...};構文はどのように機能しますか?

さて、「古い」(「」のないもの)順序アルファベット順の両方
を保持する必要がある場合、確かなことは1つ だけです-そのために上記で提案されたように使用することはできません。
enumd

enum

MQL4は、コンパイラ段階で「名前付き定数enum」を登録するための構文シュガーとして実装し、そのような要素を新しい特定のデータ型の順序付けられた列挙に変換します (コンパイル段階で他の強い型付けされた言語データ型と一致しません)。

規則:列挙型のメンバーである名前付き定数に特定の値が割り当てられていない場合、新しい値が自動的に形成されます。それが列挙の最初のメンバーである場合、値 0 がそれに割り当てられます。後続のすべてのメンバーの値は、前のメンバーの値に 1 を加算して計算されます。

つまり、アルファベットの順序と、付随的に配置された連続した順序を混在させて壊すことはできません (ハリウッドが末尾のタイトルで述べているように: 「出現順で」 )。


では、何ができるでしょうか?

レインマンの解決策 (「チャーリー・バビットと一緒にホルブルックに行く」):

enum ENUM_myChoice{ 
     a = uchar( "a" ),
     b = uchar( "b" ),
     c = uchar( "c" ),
     e = uchar( "e" ),
     f = uchar( "f" ),
     g = uchar( "g" ),
  // ----------------- WHERE ONE CAN BENEFIT AN OUT-OF-ORDINAL ORDER ADDING:
     d = uchar( "d" )
     };
于 2016-12-31T21:47:26.217 に答える