如何将switch语句与Boost枚举一起使用

时间:2013-06-11 11:01:59

标签: c++ boost enums

我正在使用BOOST_ENUM宏并尝试根据我创建的枚举类型的变量编写switch语句。我收到"expression must have integral or enum type"

的错误消息

有没有办法一起使用Boost枚举和切换语句?

我见过This link,但它说使用boost::native_value,我得到的消息是Boost名称空间没有native_value成员。我无法弄清楚我是否应该为它添加额外的头文件。

有什么想法吗?

示例代码:

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

1 个答案:

答案 0 :(得分:2)

您无法启用Direction对象,请尝试使用switch (response.index())

当然,您还需要使用Direction::Forward,而不是Action::Forward,但这可能不会导致编译错误,具体取决于BOOST_ENUM的编写方式。

您还可以考虑使用C ++ 11枚举类型:

enum class Direction { FORWARD, BACKWARD };
相关问题