すべてのコードでの使用にほぼ移行しましたが、シングルトンクラスなど、boost::shared_ptr
使用するいくつかの孤立したケースがまだあります。std::auto_ptr
template < typename TYPE >
class SharedSingleton
{
public:
static TYPE& Instance()
{
if (_ptrInstance.get() == NULL)
_ptrInstance.reset(new TYPE);
return *_ptrInstance;
}
protected:
SharedSingleton() {};
private:
static std::auto_ptr < TYPE > _ptrInstance;
};
これが行われなかったのには非常に正当な理由があると言われましたがshared_ptr
、私の人生ではその理由がわかりません。それauto_ptr
は最終的に次の標準で減価償却としてマークされることを知っているので、この実装をどのように/どのように置き換えることができるかを知りたいです。
auto_ptr
また、?の代わりに使用することを検討する理由は他にありshared_ptr
ますか?また、将来、shared_ptrに移行する際に問題が発生することはありますか?
編集:
- したがって、「上記のコードで安全に置き換えることができますか」という答えでは、答えは「はい」です。ただし、パフォーマンスにわずかな影響を与えます
auto_ptr
。shared_ptr
auto_ptr
最終的に減価償却としてマークされ、に移動したらstd::shared_ptr
、コードを徹底的にテストして、さまざまな所有権のセマンティクスに準拠していることを確認する必要があります。