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 回答