は、私は、オブジェクトがタイプDerived
であるかどうかを伝えるために、変数を持つ2つのクラス、Base
とDerived
を考えてみましょう私はセットを反復処理する必要があり、あのにのみDerived
オブジェクトをコピーはベースオブジェクトから派生したオブジェクトをコピーする(スマート)ポインタ
std::set<std::shared_ptr<Base> > bases;
// Populate this set one way or another
:Base
オブジェクトへstd::shared_ptr
年代のstd::set
Base
共有ポインタのTHER同様のセット:
std::set<std::shared_ptr<Base> > copies;
for(auto &b: bases) {
if(b->is_derived) {
copies.insert(/*Somehow copy the `Derived` object and assign a `std::shared_ptr<Base>` to it */);
}
}
私はBase
ポインタを知っていればコピーはderived_only_member
に同じ値を持つように私はそれをコピーすることができますどのように、Derived
オブジェクトを指していますか?
Derived
にあり、Base
が持つすべてのメンバー変数の引数を持つコピーコンストラクタなしでこれを行う方法はありますか?私の実際のバージョンDerived
には多くのメンバーがいるので、これは実用的ではありません。
そしてコピーは、元の 'Derived'オブジェクトとして' derived_only_member'に対して同じ値を持つことになりますか? –
@カイもちろん、そうです。 – user0042