私はXeoによる古い熟考型消去テクニックに出くわし、そのコードをどのように修正してと.std::unique_ptr'ers
std::shared_ptr'ers
投稿のコードはここにあります。何かを含むものが供給されunique_ptrs
、データshared_ptr'ers
がガベージになると、コードはコンパイルされません。私が試したのは、テンプレート化された基本クラスから継承されたクラスだったので、少し複雑だったのかもしれません。さて、これは主に好奇心からです。たとえば、Boost.Anyが使用できないstd::vector
場合など、複雑なオブジェクトを格納するときに便利になる可能性があるため、(一般的には)難しいのではないかと思いました。
編集: テスト中にコードにバグがあることに気付きましshared_ptr'ers
たunique_ptr'ers
. また、このタイプの消去された新しいインスタンスAny_Virtual
(Xeo によって提供されるコードのように) を、たとえばstd::unique_ptr'ers
.
その場合、質問は次のようになると思います。
Any_Virtual
で動作するように を修正するにはどうすればよいstd::unique_ptr
ですか?- オブジェクト、スマート ポインターを保持する
std::vector<Any_Virtual>
場所、またはオブジェクトのどちらが優れたデザインになるでしょうか? それとも問題ですか?Any_Virtual
std::vector<std::unique_ptr<Any_Virtual>>