一品网
  • 首页

c++ 智能指针的向下转换 向下塑型 cast


class A
{
public:
    void test() { std::cout << "test" << std::endl; }
};

class B : public A
{
public:
    void test2() { std::cout << "test2" << std::endl; }
};

std::unique_ptr Get()
{
    std::unique_ptr b(new B);
    return b;
}

int main()
{
    auto o = Get();  // 如何转换为 std::unique_ptr ?
    system("pause");
    return 0;
}

需取出原始指针:

B* ptr = dynamic_cast(o.get());

int main()
{
    auto o = Get();  
    std::cout << typeid(o).name() << std::endl;
    auto x = reinterpret_cast(o.release());
    std::unique_ptr b(x);
    std::cout << typeid(b).name() << std::endl;
    system("pause");
    return 0;
}
CC++

相关


C/C++避免头文件重复包含的方法

C/C++ 调用API获取当前时间

【转载】VSCode配置C/C++环境

C/C++ Qt ToolBar 菜单组件应用

C/C++ Qt ToolBar 菜单组件应用

Python与C/C++的混合调用

c/c++中的友元设计

Mac(M1)配置VSCode中C/C++环境(只需三步)

c/c++ # and ## in macros以及宏debug

cmake生成Makefile时指定c/c++编译器

C/C++双叹号!!运算符

winexec()函数的参数说明(C/C++)

标签

一品网 冀ICP备14022925号-6