小编Sui*_*anP的帖子

使用 make_shared<U[]>( std::size_t N )` 时出错

我正在尝试实现一个固定大小的多维数组,其大小在运行时确定。make_shared与( )的 (2) 重载template<class T> shared_ptr<T> make_shared(std::size_t N) // T is U[]。但是,我面临编译错误(日志如下)。shared如果我将s 更改为其对应项,则不会出现该错误unique。我的问题是,

\n
    \n
  • 这个错误是关于什么的?
  • \n
  • 为什么unique有效?
  • \n
  • 有更好的方法来实现这种运行时固定的多维数组容器吗?
  • \n
\n

最小工作示例:

\n
#include <memory>\n#include <iostream>\nint main() {\n    typedef int cell_t;\n    std::size_t x, y;\n    std::cin >> y >> x;\n    auto layout = std::make_shared<std::shared_ptr<cell_t[]>[]>(y);\n    for (std::size_t i = 0; i < y; i += 1) {\n        layout[i] = std::make_shared<cell_t[]>(x);\n    }\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

错误消息如下g++-10(为简洁起见,省略了注释)

\n
In file included …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers shared-ptr c++20

1
推荐指数
1
解决办法
1544
查看次数

标签 统计

c++ ×1

c++20 ×1

shared-ptr ×1

smart-pointers ×1