c++ - 指向函数的智能指针变量
问题描述
我正在研究 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 传递给函数?
谢谢。
解决方案
Astd::unique_ptr
不能共享 - 如果可以,它不会特别独特!
两种解决方案:
std::shared_ptr
代替std::unique_ptr
. _通过引用传递:即
???
变为std::unique_ptr<std::unique_ptr<int[]>[]>&
.
推荐阅读
- c# - 动画破坏 transform.position ,移动到鼠标点击 C#
- amazon-web-services - 为什么使用 SCP 返回错误“没有这样的文件或目录”
- css - 使用 w3.css 在项目之间添加空格
- react-native - 在 React Native 中开始创建项目最推荐的是什么?
- java - 使用jsp从动态表中获取数据到另一个页面
- java - 应用程序上下文路径在tomcat中不起作用
- microsoft-cognitive - 必应新闻搜索 API v7,缩略图大小不正确
- c++ - 为什么 gcc 编译器标志未知?
- spring - java.sql.SQLFeatureNotSupportedException:方法 org.postgresql.jdbc4.Jdbc4Connection.isValid(int) 尚未实现。在 Spring Boot 中
- android - 如何从 res 中探索文件夹并选择一些内容?