如何从函数返回2d常量值数组? 我需要返回这样的内容:
//I don't even know if this is the best way to do 2d arrays in c++.
const int matrix[4][2] = {
{10,11},
{12,13},
{14,15},
{16,17}
};
这是我试过的:
#include <iostream>
using namespace std;
int** createMatrix();
int main(){
int **m = createMatrix();
return 0;
}
const int** createMatrix(){
const int **matrix = new const int*[4];
matrix[0] = new const int[2] = {10,11};
matrix[1] = new const int[2] = {12,13};
matrix[2] = new const int[2] = {14,15};
matrix[3] = new const int[2] = {16,17};
return matrix;
}
我得到的输出:
main.cpp:在函数'const int ** createMatrix()'中: main.cpp:12:13:错误:ambiguating'const int ** createMatrix()'的新声明 const int ** createMatrix(){ ^ ~~~~~~~~~~~
main.cpp:5:7:注意:旧声明'int ** createMatrix()' int ** createMatrix(); ^ ~~~~~~~~~~~
main.cpp:15:29:错误:'const int'的'new'中未初始化的const matrix [0] = new const int [2] = {10,11}; ^
main.cpp:16:29:错误:'const int'的'new'中未初始化的const matrix [1] = new const int [2] = {12,13}; ^
main.cpp:17:29:错误:'const int'的'new'中未初始化的const matrix [2] = new const int [2] = {14,15}; ^
main.cpp:18:29:错误:'const int'的'new'中未初始化的const matrix [3] = new const int [2] = {16,17};
答案 0 :(得分:2)
简单的解决方案是创建一个数组数组,就像你先显示的一样,然后返回它。
在函数内部使static
使其生命周期不会结束。并记住返回正确的类型(数组数组与指针指针不同)。
可选择使用std::array
而不是普通的C风格数组。
如果在运行时可以配置大小,请使用std::vector
。
答案 1 :(得分:0)
函数声明和函数定义具有不同的返回类型。
int** createMatrix();
和
const int** createMatrix(){
也是这样的初始化
matrix[0] = new const int[2] = {10,11};
不正确。
看来你的意思是以下
#include <iostream>
const int** createMatrix();
int main()
{
const int **m = createMatrix();
return 0;
}
const int ** createMatrix()
{
const int **matrix = new const int*[4];
matrix[0] = new const int[2] {10,11};
matrix[1] = new const int[2] {12,13};
matrix[2] = new const int[2] {14,15};
matrix[3] = new const int[2] {16,17};
return matrix;
}
答案 2 :(得分:0)
您应该考虑将其保存为长度为1d的数组(xsize * ysize),据称这比保存2d数组要好。