我收到以下代码的编译时错误。在第 23 行使用 BOOST_FOREACH 时弹出错误:
17 class MyVec: protected std::vector<int>
18 {
19 public:
20 void add(int i) { this->push_back(i); }
21 void print()
22 {
23 BOOST_FOREACH(int i, *this)
24 std::cout << i;
25 std::cout << std::endl;
26 }
27 };
但是,如果我更改protected
为public
第 17 行,它会按预期编译和运行。此外,我可以通过使用带有迭代器的标准样板代码进行迭代。
为什么会这样??任何帮助,将不胜感激!:-)
编辑:这是否意味着我不能在不公开 begin() & end() 的情况下使用 BOOST_FOREACH ?EDTI2:实际上,也需要公开 const_iterator 和迭代器类型。