コードパターンの組み合わせの例
1の#include <iostreamの> 2の#include < ストリング > 3の#include <リスト> 4 使って 名前空間STDを、 5つの 6 クラスコンポーネント 7 { 8 公共: 9 の仮想 ボイドショー(){}。 10 11 }。 12 クラスの葉:公共コンポーネント 13 { 14 プライベート: 15 文字列情報。 16 17 公共: 18 葉(ストリングm_info) 19 { 20 情報= m_info。 21 }。 22 ボイドショー() 23 { 24 COUT <<情報<< ENDL。 25 }。 26 27 }。 28 29 クラス ConcreteComponent:公共コンポーネント 30 { 31 プライベート: 32 文字列情報。 33 リスト<コンポーネント*> m_list; 34 公共: 35 ConcreteComponent(文字列m_info) 36 { 37 情報= m_info。 38 }。 39 ボイド追加(成分* m_ComponentPtr) 40 { 41 m_list.push_back(m_ComponentPtr)。 42 }。 43 ボイドショー() 44 { 45 COUT <<情報<< ENDL。 46 リスト<コンポーネント*> ::イテレータITER = m_list.begin(); 47 のための(!; ITER = m_list.end(); ITER ITER ++ ) 48 { 49 (* ITER) - > ショー(); 50 } 51である }; 52である 53れる }; 54は、 55 のint main()の 56である { 57である (ConcreteComponent m_sum " 本社" ); 58 ConcreteComponent m_com1(" ブランチ1。" ); 59 ConcreteComponent m_com2(" セグメント2 " ); 60 葉m_leaf1 (" 子会社1。" ); 61である (葉m_leaf2 " 子会社2 " )、 62は 63にさ m_com1.add(&m_leaf1)。 64 m_com1.add(&m_leaf2)。 65 m_sum.add(&m_com1)。 66 m_sum.add(&m_com2)。 67 68 m_sum.show(); 69 70 GETCHAR()。 71 リターン 0 。 72 }。