首页 > 解决方案 > C2440 使用 Shared_ptr 创建二维数组

问题描述

我正在尝试使用 shared_ptr 创建二维数组,但出现错误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);
        }
    }
}

标签: c++

解决方案


我更改了以下代码:

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.


推荐阅读