如何使用BOOST_FOREACH枚举BOOST_ENUM?

时间:2010-10-30 22:41:51

标签: c++ boost boost-foreach

有人可以解释一下如何使用BOOST_FOREACH枚举BOOST_ENUM吗? 下面的例子表明我使用了std :: for_each,但没有使用BOOST_FOREACH。

示例代码:

BOOST_ENUM_VALUES(  MyEnum, 
  const char *, 
      (xMin)("xMin")
      (xMax)("xMax")
      (yMin)("yMin")
      (yMax)("yMax")
);

void blah(const MyEnum & val)  // working demo with std_foreach
{
  std::cout << "index=" << val.index() << " val=" << val.value() << " str=" << val.str() << std::endl;
}


void foo()
{
  //BOOST_FOREACH : does not compile...
  BOOST_FOREACH(MyEnum myEnum, MyEnum() ) // I tried to construct a "dummy" enum in order to use its iterator with no luck...
  {
    std::cout << "index=" << myEnum.index() << " val=" << myEnum.value() << " str=" << myEnum.str() << std::endl;
  }

  //std::for_each : works...
  std::for_each(MyEnum::begin(), MyEnum::end(), blah);

}

非常感谢提前!

编辑:正如答案中所提到的,代码可以使用boost的最新代码库。

1 个答案:

答案 0 :(得分:1)

上面的示例代码使用gcc 4.5.1和vc2010编译并运行就好了(在添加相应的#include之后)。我尝试从Vault中使用enum_rev4.6。您看到了哪些编译错误?