菜鸟笔记
提升您的技术认知

std::dynamic-ag真人游戏

class d:public b

{

};

如果,b的指针指向d时,想用d里面的函数,而在b里面没有时,我们就会使用std::dynamic_pointer_cast函数,但是,这只适合shared_ptr,不适合std::unique_ptr,因为c 标准库根本没实现。所以要自己实现一个。

实现细节:

template
std::unique_ptr dynamic_unique_cast(std::unique_ptr&& p) {
    if (to* cast = dynamic_cast(p.get()))
    {
        std::unique_ptr result(cast, std::move(p.get_deleter()));
        p.release();
        return result;
    }
    return std::unique_ptr(nullptr); // or throw std::bad_cast() if you prefer
}

总结:估计c 标准库不去实现,是可能违背了std::unique_ptr 的唯一性,以上,函数只适合研究学习。不建议,用在真正的项目里面

网站地图