5

次のコードをコンパイルしようとすると、コンパイラエラーが発生します。

for(binary_instructions_t &inst: BinaryInstructions){


}

BinaryInstructionsこの列挙型クラスは次のとおりです。

typedef unsigned int binary_instructions_t;

enum class BinaryInstructions : binary_instructions_t
{
    END_OF_LAST_INSTR = 0x0,

    RESET,
    SETSTEP,
    START,
    STOP,

    ADD,
    REMOVE,
};

enumクラス内のアイテムを使用してforループに基づいて範囲を「実行」することを許可する必要がありますか?または、forループに基づく範囲が配列の内容を検索するためのものであり、列挙型クラスのようなものではないということを微妙に誤解したことがありますか?

私も試しました:インスタンスの作成とインスタンス内の検索:

BinaryInstructions bsInstance;
for(binary_instructions_t &inst : bsInstance){


}

でも葉巻はありません...よろしくお願いします

4

2 に答える 2

8

範囲ベースのforループには、配列やベクトルなどのコレクションが必要です。enumクラスはコレクションではありません。

ただし、これはC ++であるため、回避策があります。参照:列挙型クラスで範囲ベースのForを許可しますか?

于 2013-02-19T18:57:43.920 に答える
0

範囲ベースのforループは、要素のリストを簡単に反復できるメカニズムです。「要素のリスト」は、プレーン配列、またはイテレータ型を返すメソッドbeginとメソッドを実装するクラスのインスタンスにすることができます。end

例:

int arr[] = { 1, 2, 3, 4 };
for (int cur : arr)
   std::cout << cur << std::endl;
于 2013-02-19T19:01:48.613 に答える