1

次のコードでコンパイル時エラーが発生します。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 型も公開する必要があります。

4

1 に答える 1