【初心者歓迎】C/C++室 Ver.77【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.77【環境依存OK】 - 暇つぶし2ch219:デフォルトの名無しさん
11/12/27 14:44:51.44
// Hogeのインスタンスをたくさん作成
vector<auto_ptr<Hoge> > hoge_pointers(num, NULL);
for (int i = 0; i < num; i++) { hoge_pointers[i].reset(new Hoge); }

// pushするループで例外を投げたくないから、先行してhoge_userの内部にメモリを確保する
hoge_user.reserve(hoge_pointers.size());

// pushされた時点からポインタはhoge_userが管理する
for (int i = 0; i < num; i++) { hoge_user.push(hoge_pointers[i].release()); }

こんな感じで、hoge_userの外でHogeインスタンスをたくさん作成してから
hoge_userにポインタを渡したいんですが、どういう風にすればいいでしょうか

例外が起こった場合には、hoge_pointersがすべて解放されて、
hoge_userにpushされたポインタはすべてなかったことにしたいです

で、スマポを使おうと思ったのですが、auto_ptrはSTLのvectorに突っ込めなくて、
boost::shared_ptrはポインタを取り出すことができないのでやめました

try/catch 使えって話ですが、なにか他にいい解決策はありますか?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch