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
相关产品推荐
相关产品推荐

