You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何将二维指针数组传入三维数组类函数并返回三维数组值

错误根因

你遇到的cannot convert ‘int***’ to ‘int**’ in assignment报错和传参无关,触发点在main函数的赋值语句:

indexes = tableOfIndexes.matrixOfIndexes(...)
  • MatrixOfIndexes::matrixOfIndexes 函数的返回值是三维指针int***
  • 你定义的indexes变量是二维指针int**
    两类不匹配导致编译失败。
修复方法

直接修改main函数中indexes的声明即可解决当前报错:
将int **indexes = {};替换为int ***indexes = {};

其他优化建议(适配超大矩阵处理需求)
  • 补充内存释放逻辑:你当前的类只实现了动态内存申请,没有对应的释放逻辑,处理百万级矩阵时会出现严重内存泄漏,建议在析构函数中遍历指针逐级释放new申请的内存,避免资源占用过高。
  • 推荐用STL容器替代裸指针:可以用std::vector封装矩阵,二维矩阵对应std::vector<std::vector<int>>,三维矩阵对应std::vector<std::vector<std::vector<int>>>,STL自动管理内存,性能损耗极低,完全适配超大矩阵的处理场景,还能避免手动管理内存出现的各种问题。
  • 替换变长数组实现:代码中的int connectivity[numberOfElements][2]属于C语言变长数组特性,不属于C++标准规范,部分编译器不支持该写法,建议替换为动态分配数组或者std::vector实现,提升代码兼容性。

内容的提问来源于stack exchange,提问作者baezacaljo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:27:00