class MyClass {
public:
MyClass(std::weak_ptr<MyClass> parent){}
}
我想这样做:
auto newInstance = std::make_shared<MyClass>(nullptr);
或neak_ptr参数的默认值为null,例如:
void function(int arg,std::weak_ptr<MyClass> obj = nullptr);
,但我需要做的是:
auto newInstance = std::make_shared<MyClass>(std::shared_ptr<MyClass>(nullptr));
为什么?
weak_ptr
只能由另一个或
weak_ptr
构建。无论是
shared_ptr
是否
nullptr
您可以使用默认构造的
weak_ptr
(
std::weak_ptr<MyClass>()
),您可以在其中尝试使用nullptr
::
auto newInstance = std::make_shared<MyClass>(std::weak_ptr<MyClass>());
void function(int arg,std::weak_ptr<MyClass> obj = std::weak_ptr<MyClass>());