ご存知のように、メモリ リークを回避するには、共通ポインタではなく SmartPtr を使用してオブジェクトを管理する方がよいでしょう。
ほとんどの場合、非常にうまく機能します。
今、私は問題に遭遇しました。私はそれをより簡単に説明するために最善を尽くしました.
私は基本クラスを持っています:
class Base;
基本クラスから継承された別の 2 つのクラスがあります。
class Derive1 : public Base;
class Derive2 : public Base;
生のポインタを使えば、ポリモーフィックを簡単に実装できます;</p>
Base *pd1 = new Derive1();
Base *pd2 = new Derive2();
しかし、同じことを実装するために使用したい場合はsmartPtr
、どうすればよいですか? 例えば:
SmartPtr<Base> pd1 = SmartPtr<Derive1>(new Derive1);
smartPtr
変換をサポートするものはありますか、それとも のテンプレートを実装する必要がありますsmartPtr
か?しかし、テンプレートを自分で実装する場合、コードの肥大化を回避するにはどうすればよいでしょうか?だれが良いアドバイスをくれますか?
この操作をサポートするテンプレート smartPtr がある場合、この機能をどのように実現しますか? 基本ポインターが派生オブジェクトを指すことができることはわかっていますが、それは悪いことです!!