Я хочу построить функцию, которая возвращает 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 ref?
TExposureType m_ExposureMatrix[FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS];
если я правильно понимаю ваш вопрос, (и это большое, если), это то, что вы хотите:
В заголовке вашего класса:
const TExposureType (&GetExposureMatrix()) [FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS];
и в вашем файле cpp
const TExposureType (&CAteImage::GetExposureMatrix()) [FORMAT_MATRIX_COLS][FORMAT_MATRIX_ROWS]
{
return m_ExposureMatrix;
};
Вы можете значительно сократить это с decltype
если у вас есть совместимый компилятор, который поддерживает его, кстати. В любом случае, вы должны иметь возможность вернуться m_ExposureMatrix
по константной ссылке делаю выше.
Других решений пока нет …