gpt4 book ai didi

c++ - 为什么我不能将 nullptr 转换为 weak_ptr<>

转载 作者:IT老高 更新时间:2023-10-28 22:18:50 25 4
gpt4 key购买 nike

class MyClass {
public:
MyClass(std::weak_ptr<MyClass> parent){}
}

我想这样做:

auto newInstance = std::make_shared<MyClass>(nullptr);

或者weak_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>());

关于c++ - 为什么我不能将 nullptr 转换为 weak_ptr<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281909/

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