Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二维数组作为返回值c++;_C++ - Fatal编程技术网

C++ 二维数组作为返回值c++;

C++ 二维数组作为返回值c++;,c++,C++,我想构建一个返回2D数组的函数 TExposureType** CAteImage::GetExposureMatrix() { TExposureType** ptr = new TExposureType*[FORMAT_MATRIX_ROWS]; for (int i = 0; i < FORMAT_MATRIX_ROWS; i++) { ptr[i] = new TExposureType[FORMAT_MAT

我想构建一个返回2D数组的函数

TExposureType** CAteImage::GetExposureMatrix()
{
       TExposureType** ptr =  new TExposureType*[FORMAT_MATRIX_ROWS];
       for (int i = 0; i < FORMAT_MATRIX_ROWS; i++)
       {
              ptr[i] = new TExposureType[FORMAT_MATRIX_COLS];
              for (int j = 0; j < FORMAT_MATRIX_COLS; j++)
              {
                     ptr[i][j] = m_ExposureMatrix[i][j];
              }
       }
       return ptr;
}

如果我正确理解你的问题,(这是一个很大的假设),这就是你想要的:

在类标题中:

const TExposureType (&GetExposureMatrix()) [FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS];
在您的cpp文件中

const TExposureType (&CAteImage::GetExposureMatrix()) [FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS]
{
    return m_ExposureMatrix;
};

顺便说一句,如果您有一个兼容的编译器支持它,那么您可以使用
decltype
大大缩短这个时间。无论哪种方式,您都应该能够通过const reference返回
m\u ExposureMatrix
,执行上述操作。

您的代码返回一个指向数组数组的指针,因此是一个2D数组。你到底想要什么?指针的指针,撇开语法不谈,不是2D数组。二维数组是
arr[N][M]
并且不一样。要知道如何为二维数组返回一个引用而不是指针,请参考什么??你的动态内存分配?@WhozCraig我想返回一个2D数组,比如m_ExposureMatrix[i][j];作为我函数中的常量引用。你能告诉我怎么做吗?
const TExposureType (&CAteImage::GetExposureMatrix()) [FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS]
{
    return m_ExposureMatrix;
};