VisualStudio2010版スマートポインタ
どうも使い方がわからんorz
まあboostと同じなんだろうけどどこまで同じかよくわからん。ていうかそもそもboost版もあまり分かっていないので比較してもしょうがない。なのでどうせこれからはVS版しか使わないからこちらを熟知すればいいかもしれないがVS方言が埋まっていそうで怖い。どうしたもんだか・・・。
まあ基本的な使い方は特に困らない。
std::unique_ptr< int > up( new int ); *up = 10; std::shared_ptr< int > sp( new int ); *sp = 20;
こまったのが配列だ。boost版は別にshared_arrayというのがあったのでそれを使えばよかったのだがVS版(C++0xも?)だと配列版が存在しない。流石に配列を使うなということはないと思うのできっとやり方があるんだと思って
std::unique_ptr< int, std::default_delete< int[] > > aa( new int[100] ); std::shared_ptr< int > arr( new int[100], std::default_delete< int[] >() );
一応、上記のようにすれば対応出来るっぽいがこれってVSの方言なのかな?それともC++0xとして正式なやり方なのかな?どちらにしろ、operator[]が定義されていないのでかなり使いにくいです。
//up[10] = 10; //無理 *(up.get() + 10) = 10;
教えて偉い人(ぉ