gpt4 book ai didi

c++ - 为什么我不能分配给 uint_8[] 类型的 unique_ptr?

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

考虑一下,我已经初始化了 unique_ptr像这样:

unique_ptr<uint_8[]> pixels{nullptr};

在那之后,我决定分配一个新数组:

pixels = new uint_8[10];

不幸的是,它不允许分配一个大小为 10*8 的新数组。我知道,我可以简单地分配 std::make_unique<uint_8[]>(10)但我只想了解智能指针。

基本上,问题是:

  1. 为什么它不允许来自 nullptr 的转换到一个新阵列?
  2. nullptr C++11 中的某些特定类型?

最佳答案

pixels = new uint_8[10];

这意味着 operator=std::unique_ptr将会被使用。然而,如果你看一下所有 operator= overloads你会注意到没有重载 T*对于 std::unique_ptr<T[]> .

你需要的方法叫做 reset 并且它重置存储在std::unique_ptr中的旧值与较新的:

pixels.reset(new uint_8[10]);

关于c++ - 为什么我不能分配给 uint_8[] 类型的 unique_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104034/

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