gpt4 book ai didi

c++ - 不能使用多态派生创建基类的 shared_pointer

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:22 26 4
gpt4 key购买 nike

我有一个基本多态类(带有虚方法)和一个派生类。我正在尝试使用以下代码

     boost::shared_ptr<base_class> ptr( new derived_class() );

但是编译器返回如下错误

    cannot convert ‘fpga_northwest*’ to ‘fpga*’ in initialization
make: *** [../obj/ixecute_cmd_interface.o] Error 1

环顾四周,我很想使用构建良好的以下内容,但我有一些疑问。你觉得这样对吗?

     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 );

如果我使用 boost::static_pointer_cast 我有编译错误;因为我是从派生对象转换为基础对象,所以 static_cast 应该不是更正确?

谢谢你的帮助

最佳答案

boost::shared_ptr<base_class> ptr( new derived_class() );

这应该可以正常工作。

也许这些类根本不相关?

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

关于c++ - 不能使用多态派生创建基类的 shared_pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710989/

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