C2440 使用Shared_ptr创建二维阵列
C2440 Create 2D Array with Shared_ptr
>我正在尝试使用 shared_ptr 创建 2D 数组,但我有一个错误C2440
.
我想我写了正确的代码,但发生了错误。
请帮助我,谢谢。
#include <iostream>
#include <memory>
int main()
{
int size;
std::cout << "Input size : ";
std::cin >> size;
std::shared_ptr<std::shared_ptr<int[]>[]> myArr(new std::shared_ptr<int[]>[size]);
for (int i = 0; i < size; i++)
myArr[i] = std::make_shared<int[]>(size); // error..
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
myArr[i][j] = (j+1);
}
}
}
我更改了以下代码:
for (int i = 0; i < size; i++)
myArr[i] = std::make_shared<int[]>(size); // error..
到:
myArr[i] = std::shared_ptr<int[]>(new int[size]);
用shared_ptr
做数组,不能用make_shared
。
您的第一个循环(松散地(尝试通过std::make_shared
执行以下操作,这是一个错误:
int *t = int*[]; // ERROR
相反,您可以直接创建共享指针并为其分配:
for (int i = 0; i < size; i++)
myArr[i] = std::shared_ptr<int[]>(new int[size]);
直接使用std::shared_ptr(new T)
而不是std::make_shared<T>(...)
,但是在这种情况下,您不能使用后者。
相关文章:
- 二维阵列的动态分配
- C2440 使用Shared_ptr创建二维阵列
- 围绕二维阵列做一个圆圈
- 为什么一个二维阵列会导致赛段故障,而另一个则不会导致?
- 二维阵列的名称到底代表什么?
- 返回二维阵列
- 是二维阵列访问/修改时间组
- 如何创建一个具有空值、递减编号系统和.txt文件输入值的二维阵列网格
- 八个皇后二维阵列,带有gotos errror
- C++中的二维阵列
- 使用矢量创建二维阵列
- 编制二维阵列
- 错误:解除分配二维阵列
- 复制二维阵列C++
- 将二维阵列模拟为一维阵列
- 从具有两列的文件中加载二维阵列
- 可调整大小的动态二维阵列的更好解决方案
- 使用二维阵列用C++求解埃拉托色尼筛
- 如何显示非对角线二维阵列元素
- 嵌套阵列或嵌套二维阵列