如何在Boost枚举中使用switch语句

How to use switch statements with Boost enum

本文关键字:switch 语句 枚举 Boost      更新时间:2023-10-16

我正在使用BOOST_ENUM宏,并试图根据我创建的枚举类型的变量编写开关语句。我得到错误信息"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;

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

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

还可以考虑使用c++ 11的枚举类型:

enum class Direction { FORWARD, BACKWARD };