0

マクロを使用して、BOOST_ENUM作成した列挙型の変数に基づいて switch ステートメントを記述しようとしています。エラーメッセージが表示されます"expression must have integral or enum type"

Boost 列挙型と switch ステートメントを一緒に使用する方法はありますか?

このリンクを見たことがありますが、使用するようboost::native_valueに指示されており、Boost 名前空間に native_value メンバーがないというメッセージが表示されます。追加のヘッダー ファイルをインクルードする必要があるかどうかわかりませんでした。

何か案は?

コード例:

BOOST_ENUM(Direction, 
(Forward)
(Backward)
)
Direction response = Direction::Forward;
switch (response)
        {
case Direction::Forward :
      return; 
    break;
4

1 に答える 1

2

Directionオブジェクトをオンにできません。 を使用してみてくださいswitch (response.index())

Direction::Forwardもちろん, notも使う必要がありますAction::Forwardが、書き方によってはコンパイルエラーにもならない場合もありますBOOST_ENUM

C++11 列挙型の使用を検討することもできます。

enum class Direction { FORWARD, BACKWARD };
于 2013-06-11T12:18:44.613 に答える