2D массив как возвращаемое значение Переполнение стека

Я хочу построить функцию, которая возвращает 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];

0

Решение

если я правильно понимаю ваш вопрос, (и это большое, если), это то, что вы хотите:

В заголовке вашего класса:

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 по константной ссылке делаю выше.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector