我想构建一个返回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];
答案 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
来执行上述操作。