【问题标题】:How to use switch statements with Boost enum如何在 Boost 枚举中使用 switch 语句
【发布时间】:2013-06-11 11:01:59
【问题描述】:

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

有没有办法同时使用 Boost 枚举和 switch 语句?

我见过This link,但它说要使用boost::native_value,我收到消息说Boost 命名空间没有native_value 成员。我不知道我是否应该为它包含一个额外的头文件。

有什么想法吗?

示例代码:

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

【问题讨论】:

  • “我无法上班”是什么意思?究竟发生了什么?您收到什么错误消息?
  • 上面添加了错误信息
  • 是否有一个简单的代码示例可以添加到您的问题中?
  • 您不断更改您的代码。不要那样做。您的源文件中有哪一个? '动作'还是'方向''::Forward'?

标签: c++ boost enums


【解决方案1】:

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

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

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

enum class Direction { FORWARD, BACKWARD };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2012-04-30
    • 2017-12-13
    • 2013-02-17
    • 2015-07-09
    相关资源
    最近更新 更多