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?
谢谢你的帮助
boost::shared_ptr<base_class> ptr( new derived_class() );
Run Code Online (Sandbox Code Playgroud)
这应该工作得很好.
也许这些课程毕竟不相关?
也许这些类在那时是不完整的,所以编译器不知道这些类是相关的?(但这也会产生其他错误.)