から派生したクラスをObject
コンテナに追加するこの関数があります。
template<class T> void registerObject(T& object) {
auto sp = std::shared_ptr<T>(&object, [](T*){});
std::shared_ptr<Object> op = std::static_pointer_cast<Object>(sp);
objects_.push_back(op);
}
static_pointer_cast
カスタムの削除メソッドを新しいポインタに対して引き続き有効にするには、 で何が起こりますか?
ラムダが派生型を取ると評価しないので、私は尋ねますか? しかし、キャストされたポインターはObject*
そのラムダに a を渡しますか? カスタム削除が呼び出されたときに「アップキャスト」が発生していませんか? 基本型が派生型であることを保証できないため、どれが不可能だと思いましたか?