gpt4 book ai didi

c++ - 如何make_shared派生类?

转载 作者:IT老高 更新时间:2023-10-28 22:24:53 29 4
gpt4 key购买 nike

我想使用 make_shared<T>带有派生类的函数,如下所示

class Base {
public:
typedef std::shared_ptr<Base> Ptr;
};

class Derived : public Base {};

Base::Ptr myPtr = std::make_shared(/* Derived() */ );

我如何告诉 make_shared 构建这样一个对象?

我想避开经典

Base::Ptr ptr = Base::Ptr(new Derived());

利用 make_shared 函数中的单个 alloc。

最佳答案

std::shared_ptr有一个可以生成 shared_ptr<Base> 的转换构造函数来自 shared_ptr<Derived> ,所以以下应该可以工作:

#include <memory>
class Base {
public:
typedef std::shared_ptr<Base> Ptr;
};
class Derived : public Base {};

int main() {
Base::Ptr myPtr = std::make_shared<Derived>();
}

关于c++ - 如何make_shared派生类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24968294/

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