gpt4 book ai didi

c++ - 有没有办法自动初始化一个 std::shared_ptr 来保存一个有效的对象?

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

当我写作时

std::shared_ptr<MyType> x;

x 使用指向 nullptr 的空共享指针进行初始化。但我希望它自动调用 MyType 的默认值(或其他指定的构造函数)。我知道,我可以写:

std::shared_ptr<MyType> x = std::maked_shared<MyTYpe>();

但有时人们会忘记,然后你就会遇到麻烦,所以由编译器强制执行这一点会很好。

最佳答案

你可以创建一个类,比如:

template <typename T>
struct defaulted_shared_ptr : std::shared_ptr<T>
{
using std::shared_ptr<T>::shared_ptr;
defaulted_shared_ptr() : std::shared_ptr<T>(std::make_shared<T>()) {}
};

然后

defaulted_shared_ptr<Foo> foo;

将包含一个默认构造的 Foo

Demo

关于c++ - 有没有办法自动初始化一个 std::shared_ptr 来保存一个有效的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50287537/

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