回答編集履歴

2

C++11版を追記

2015/04/29 02:38

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -55,3 +55,41 @@
55
55
  }
56
56
 
57
57
  ```
58
+
59
+
60
+
61
+ ---
62
+
63
+
64
+
65
+ C++コンパイラがC++11に対応していれば、上記コードはもっと簡潔かつ安全に書くこともできます。
66
+
67
+ ```lang-cpp
68
+
69
+ int main(){
70
+
71
+ list<shared_ptr<A>> container;
72
+
73
+
74
+
75
+ container.push_back(make_shared<Derivation001>(...));
76
+
77
+ container.push_back(make_shared<Derivation002>(...));
78
+
79
+
80
+
81
+ for(auto p : container){
82
+
83
+ p->method();
84
+
85
+ }
86
+
87
+
88
+
89
+ // (containter要素のdeleteは自動的に行われる)
90
+
91
+ }
92
+
93
+ ```
94
+
95
+

1

コンテナ型を質問内容に合わせて修正

2015/04/29 02:38

投稿

yohhoy
yohhoy

スコア6191

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  - クラスAに仮想関数または純粋仮想関数(`virtual`)を宣言しておき、派生クラスではこれをオーバーライドする必要があります。
4
4
 
5
- - コンテナにはAクラスではなく(`vector<A>`)、Aクラスへのポインタ(`vector<A*>`)を格納する必要があります。
5
+ - コンテナにはAクラスではなく(`list<A>`)、Aクラスへのポインタ(`list<A*>`)を格納する必要があります。
6
6
 
7
7
 
8
8