当指针是智能指针时候,向下转换,用dynamic_Cast 则编译不能通过,此时需要使用dynamic_pointer_cast。向下转换(含智能指针):struct Father { //基类Father }; struct Son:Father { //基类Father的派生类B }; std::shared_ptr<Father> father; std::shared_ptr<Son> son = std::dynamic_pointer_cast<Son>(...
1、std::static_pointer_cast():当指针是智能指针时候,向上转换,用static_cast 则转换不了,此时需要使用static_pointer_cast。 2、std::dynamic_pointer_cast():当指针是智能指针时候,向下转换,用dynamic_cast 则转换不了,此时需要使用dynamic_pointer_cast(此处注意:base基类需要至少有一个virtual成员函数(即多态类...
当指针是智能指针时候,向下转换,用dynamic_Cast 则编译不能通过,此时需要使用dynamic_pointer_cast。 向下转换(含智能指针): struct Father { //基类Father }; struct Son:Father { //基类Father的派生类B }; std::shared_ptr<Father> father; std::shared_ptr<Son> son = std::dynamic_pointer_cast<Son>...
dynamic_pointer_cast 是 C++ 标准库中的一个函数模板,用于在智能指针之间进行动态类型转换。它接受一个 shared_ptr 或 weak_ptr,并将其转换为另一个类型的 sh...
可以理解为智能指针领域的dynamic_cast操作符。 总结一下:它们的基本区别,就是dynamci_cast用于裸指针和引用等动态类型的转型,而dynamic_pointer_cast主要用于智能指针的转型。 例子: //注意:dynamic_pointer_cast的模版参数只需要指定到类名即可 std::shared_ptr<ShaderMaterial> shaderMaterial = std::dynamic_pointer...
spDeriveDown= dynamic_pointer_cast<CDerive>(spBaseDown);if(spDeriveDown == NULL)//由于会进行类型的检查,这边是返回NULLcout <<"spDeriveDown is null"<<endl;/*shared_ptr<CDerive> spDeriveDown; shared_ptr<CBase> spBaseDown; spBaseDown = make_shared<CDerive>(); ...
C++中的dynamic_cast和dynamic_pointer_cast 基类转换为子类,dynamic_cast普通的类,dynamic_pointer_cast为智能指针时。 https://blog.csdn.net/jiayizhenzhenyijia/article/details/98209529
dynamic_pointer_cast用于转换std::shared_ptr类型,例如从基类上的指针转换为派生类上的指针:...
dynamic_pointer_cast主要作用是实现智能指针之间的转换,它能够将基本智能指针按照派生类关系进行向下转换,并返回一个指向派生类的智能指针。这种转换可以保证类型安全,并且能够在运行时进行检查,从而避免出现错误。 二、使用步骤 使用dynamic_pointer_cast需要经过以下几个步骤: 1. 先创建一个基本智能指针,它可以指向基类...
dynamic_pointer_cast dynamic_pointer_cast与dynamic_cast⽤法类似,当指针是智能指针时候,向下转换,⽤dynamic_Cast 则编译不能通过,此时需要使⽤dynamic_pointer_cast。智能指针的⽤法可以参考上⼀篇博客。———版权声明:本⽂为CSDN博主「贾作真时真亦贾」的原创⽂章,遵循CC 4.0 BY-SA版权协议,...