実際のポインターを使用するのと同じように、shared_ptr を使用したいと考えています。みたいなことができるようになりたかった
shared_ptr<int> a;
a = new int(5);
a = 0;
shared_ptr<int> foo()
return 0;
ただし、デフォルトでは実装されていません。
boost ライブラリの shared_ptr のソース コードを次のように変更しました。
template<class Y> void operator=( int i )
{
reset(i);
}
template<class Y> void reset(int i)
{
this_type(i).swap(*this);
}
template<class Y> void operator=( Y * p )
{
reset(p);
}
shared_ptr(int i): px(0), pn()
{
}
唯一のことは、私が a = -1; を行う場合です。通常は整数値をポインターに割り当てることができないため、コンパイルして null ポインターが返されますが、これは問題にはなりません。
私の質問は、これを実装する正しい方法ですか、それともアプリケーションをクラッシュさせる可能性のあるケースを忘れてしまったのでしょうか? どこを見ても、shared_ptr の nullpointer を取得する唯一の方法は、ptr = 0; と比較してコードがあまり洗練されていないデフォルトのコンストラクターを呼び出すことでした。