首页 > 解决方案 > 指向函数的智能指针变量

问题描述

我正在研究 C++ 智能指针,我有一个问题。

void showMap(???, const int row, const int col) {
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            std::cout << (map[i][j] == 0 ? "○" : "●") << '\t';
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}

void saveMap(???, const int row, const int col) {
    std::ofstream fout("mapdata.txt");
    if (!fout.is_open())
    {
        std::cerr << "Failed to open the file!";
        exit(0);
    }

    fout << row << " " << col << std::endl;

    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++)
            fout << map[i][j] << " ";

        fout << std::endl;
    }
}

int main() {
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

    int row, col;

    std::unique_ptr<std::unique_ptr<int[]>[]> map = loadMap(row, col);

    if (map != nullptr)
    {
        showMap(map, row, col);
        map[0][1] = 0;
        showMap(map, row, col);
        saveMap(map, row, col);
    }


    return 0;
}

我正在尝试将智能指针 var 传递给函数,但我不知道该怎么做。

我应该在函数中使用什么参数???

当然有一个简单的方法,std::unique_ptr<std::unique_ptr<int[]>[]> (&map)但我不想这样做。

有没有其他方法可以将智能指针 var 传递给函数?

谢谢。

标签: c++

解决方案


Astd::unique_ptr不能共享 - 如果可以,它不会特别独特!

两种解决方案:

  1. std::shared_ptr代替std::unique_ptr. _

  2. 通过引用传递:即???变为std::unique_ptr<std::unique_ptr<int[]>[]>&.


推荐阅读