我正在使用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;
答案 0 :(得分:2)
您无法启用Direction
对象,请尝试使用switch (response.index())
。
当然,您还需要使用Direction::Forward
,而不是Action::Forward
,但这可能不会导致编译错误,具体取决于BOOST_ENUM
的编写方式。
您还可以考虑使用C ++ 11枚举类型:
enum class Direction { FORWARD, BACKWARD };