无法使用多态派生创建基类的shared_pointer

Abr*_*ile 1 c++ casting shared-ptr

我有一个基本多态类(使用虚方法)并从中派生出来.我想使用以下代码

     boost::shared_ptr<base_class> ptr( new derived_class() );
Run Code Online (Sandbox Code Playgroud)

但编译器返回以下错误

    cannot convert ‘fpga_northwest*’ to ‘fpga*’ in initialization
    make: *** [../obj/ixecute_cmd_interface.o] Error 1
Run Code Online (Sandbox Code Playgroud)

看看周围我很想使用以下构建正常,但我有一些疑问.你认为这是正确的吗?

     boost::shared_ptr<base_class> ptr_base;
     boost::shared_ptr<derived_class> ptr_derived( new derived_class() );
     ptr_base = boost::dynamic_pointer_cast<base_class>( ptr_derived );
Run Code Online (Sandbox Code Playgroud)

如果我使用boost::static_pointer_cast我有编译器错误; 既然我从一个衍生到一个基础的铸造应该不是更正确的一个static_cast

谢谢你的帮助

vis*_*tor 5

boost::shared_ptr<base_class> ptr( new derived_class() );
Run Code Online (Sandbox Code Playgroud)

这应该工作得很好.

也许这些课程毕竟不相关?

也许这些类在那时是不完整的,所以编译器不知道这些类是相关的?(但这也会产生其他错误.)