次のコードでコンパイル時エラーが発生します。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 };
ただし、17行目に変更protected
すると、期待どおりにコンパイルおよび実行されます。public
さらに、標準のボイラープレート コードを反復子と共に使用することで、問題なく反復処理を行うことができます。
なぜこうなった??どんな助けでも大歓迎です!:-)
編集:これは、 begin() & end() を公開しないと BOOST_FOREACH を使用できないということですか? EDTI2: 実際には、const_iterator と iterator 型も公開する必要があります。