のコンテナはunique_ptr
ほとんど意味がないようです。初期化リストでは使用できず、コンテナを反復処理できませんでした(以下の回避策)。私は何かを誤解していますか?unique_ptr
または、STLコンテナを使用するのはいつ意味がありますか?
#include <memory>
#include <vector>
using namespace std;
struct Base { void go() { } virtual ~Base() { } };
// virtual ~Base() = default; gives
// "declared virtual cannot be defaulted in the class body" why?
class Derived : public Base { };
int main() {
//vector<unique_ptr<Base>> v1 = { new Derived, new Derived, new Derived };
//vector<shared_ptr<Base>> v2 = { new Derived, new Derived, new Derived };
vector<Base*> v3 = { new Derived, new Derived, new Derived };
vector<shared_ptr<Base>> v4(v3.begin(), v3.end());
vector<unique_ptr<Base>> v5(v3.begin(), v3.end());
for (auto i : v5) { // works with v4
i->go();
}
return 0;
}
次の質問は、これらの回避策を見つけるのに役立ちました。