gpt4 book ai didi

c++ - 如何将 shared_ptr> 转换为 shared_ptr>?

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:42 25 4
gpt4 key购买 nike

我需要投 shared_ptr<Foo<Derived> >shared_ptr<Foo<Base> >但不知道如何。基本上我想做的是:

shared_ptr<Foo<Base>> p (new Foo<Derived>());

但是编译器报错:

/usr/include/c++/4.8/bits/shared_ptr_base.h: In instantiation of 'std::__shared_ptr<_Tp, _Lp>::__shared_ptr(_Tp1*) [with _Tp1 = Foo<Derived> _Tp = Foo<Base> __gnu_cxx::_Lock_policy _Lp = (__gnu_cxx::_Lock_policy)2u]':
/usr/include/c++/4.8/bits/shared_ptr.h:113:32: required from 'std::shared_ptr<_Tp>::shared_ptr(_Tp1*) [with _Tp1 = Foo<Derived> _Tp = Foo<Base>]'
main.cpp:17:48: required from here
/usr/include/c++/4.8/bits/shared_ptr_base.h:768:39: error: cannot convert 'Foo<Derived>*' to 'Foo<Base>*' in initialization
: _M_ptr(__p), _M_refcount(__p)

Test Code

最佳答案

具有不同参数的类模板被 C++ 类型系统视为完全不同的类型。

Foo<Base>

与a不同类型

Foo<Derived>

并且它们之间没有多态关系。

关于c++ - 如何将 shared_ptr<Foo<Derived>> 转换为 shared_ptr<Foo<Base>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com