ura*_*ray 16 c++ null casting shared-ptr weak-ptr
class MyClass {
public:
MyClass(std::weak_ptr<MyClass> parent){}
}
Run Code Online (Sandbox Code Playgroud)
我想做这个:
auto newInstance = std::make_shared<MyClass>(nullptr);
Run Code Online (Sandbox Code Playgroud)
或者weak_ptr参数的默认值为null,例如:
void function(int arg,std::weak_ptr<MyClass> obj = nullptr);
Run Code Online (Sandbox Code Playgroud)
但是,我需要的是这样做:
auto newInstance = std::make_shared<MyClass>(std::shared_ptr<MyClass>(nullptr));
Run Code Online (Sandbox Code Playgroud)
这是为什么?
Dav*_*vid 30
因为weak_ptr概念只能从另一个weak_ptr或另一个构造shared_ptr.从原始指针构造是否有意义,无论是否nullptr.
您可以使用默认的construct 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>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11160 次 |
| 最近记录: |