Boost総合スレ part7

このエントリーをはてなブックマークに追加
106デフォルトの名無しさん
スマートポインタを昨日から触り始めました。
これはokなのに、
boost::scoped_ptr<string> s( new string("foo") );

これはコンパイル出来ない仕組みなのはなぜ?
boost::scoped_ptr<string> s;
s = new string("foo");

たとえばコンストラクタの中でinit関数を呼んで
その中でポインタ初期化したい場合とかどうすればいいんだ
107デフォルトの名無しさん:2009/02/16(月) 22:40:20
s.reset(new string("foo"));
108デフォルトの名無しさん:2009/02/16(月) 22:40:21
>>106
s.reset(new string("foo"));
109デフォルトの名無しさん:2009/02/16(月) 23:18:39
>>106
ひとつのポインタを別々のshared_ptrに代入してはいけないのでポインタを=で代入できないようにしている。newしたらすぐにスマートポインタにセットさせるのが基本。
スマートポインタをスマートポインタに=を使って代入は可能のでこれを使って共有する。