小编qwe*_*rty的帖子

智能指针和多态性

我实现了引用计数指针(SP在示例中调用),我遇到了多态性问题,我认为我不应该这样做.

在以下代码中:

    SP<BaseClass> foo()
    {   
        // Some logic...
        SP<DerivedClass> retPtr = new DerivedClass();
        return retPtr;
    }
Run Code Online (Sandbox Code Playgroud)

DerivedClass继承自BaseClass.使用普通指针这应该有效,但是它说的是智能指针"cannot convert from 'SP<T>' to 'const SP<T>&",我认为它指的是智能指针的复制构造函数.

如何通过引用计数指针允许这种多态性?我很欣赏代码示例,如果我遇到这个问题,显然我在这里做错了.

PS:请不要告诉我使用带有智能指针的标准库,因为目前这是不可能的.

c++ polymorphism templates smart-pointers

2
推荐指数
1
解决办法
3982
查看次数

标签 统计

c++ ×1

polymorphism ×1

smart-pointers ×1

templates ×1