2D数组作为返回值c ++

时间:2013-11-21 20:45:59

标签: 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_MATRIX_COLS];
              for (int j = 0; j < FORMAT_MATRIX_COLS; j++)
              {
                     ptr[i][j] = m_ExposureMatrix[i][j];
              }
       }
       return ptr;
}

我知道我的代码无效 - 我可以使用单个malloc + 1 memcpy执行相同操作。

我无法想象如何将m_ExposureMatrix [i] [j]的成员作为const引用返回?

TExposureType   m_ExposureMatrix[FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS];

1 个答案:

答案 0 :(得分:2)

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

在你的班级标题中:

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_ExposureMatrix来执行上述操作。