c++ - 有没有办法自动初始化一个 std::shared_ptr 来保存一个有效的对象?
问题描述
当我写
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
推荐阅读
- php - 如何减去类型不同的行的同一列?
- python - 在 Python 中未将值分配给 Protobuff 变量
- javascript - 如果 id 存在于 MySQL 中,则在模态上自动增加 id
- node.js - Mongoose insertMany().exec() 返回 TypeError
- mysql - mysql加入四个表并获取超过1个月的记录
- c++ - 如何在不中断的 switch case 语句中正确使用 C++ 中的 Fallthrough?
- javascript - 是否有 Javascript/HTML 表单基础网页/帖子?建了一个 Excel 表格,想把它放在网页上
- unity3d - 何时在 Unity3D 中使用 transform.position 和rigidbody.position
- php - 如何将phpmailer连接到联系表格
- java - OneSignal 通知处理程序调用“startActivity”