Ленивое вычисление и проблемы с корректностью констант

Я создал класс камеры openGL, который использует ленивую оценку для предоставления окончательной проекции или матриц проекции модель-вид-проекция через функции получения. Пользователь предоставляет различные параметры камеры на протяжении всего жизненного цикла экземпляра (FOV, положение и т. Д.), Но вместо того, чтобы пересчитывать матрицу проекции и / или матрицу MVP каждый раз при изменении параметра, устанавливается флаг «изменено» ( т.е. старая кешированная матрица теперь недействительна). Каждый раз, когда пользователь запрашивает обновленную финальную матрицу, она пересчитывается, результат кешируется, и возвращается ссылка на константу.

Все звучит нормально, пока я не вызову функцию my:

const QMatrix4x4& oE_GLCamera::getModelViewProjection() const;

из экземпляра const oE_GLCamera ... Я использую ссылки на константу повсюду в моем приложении для извлечения данных камеры из окон просмотра САПР без изменения камеры, но моя функция-получатель выполняет ленивую оценку переменных-членов, если они недействительны, что нарушает корректность констант.

Есть ли языковая функция или парадигма дизайна, о которых я не знаю, чтобы помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью,

const QMatrix4x4& oE_GLCamera::getModelViewProjection() const;

из экземпляра const oE_GLCamera ... Я использую ссылки const повсюду в моем приложении для извлечения данных камеры из видовых экранов САПР без изменения камеры, но моя функция получения выполняет ленивую оценку переменных-членов, если они недействительны, поэтому константа нарушается -корректность.

Есть ли языковая функция или парадигма дизайна, о которых я не знаю, чтобы помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью,

const QMatrix4x4& oE_GLCamera::getModelViewProjection() const;

из экземпляра const oE_GLCamera ... Я использую ссылки const повсюду в моем приложении для извлечения данных камеры из видовых экранов САПР без изменения камеры, но моя функция получения выполняет ленивую оценку переменных-членов, если они недействительны, поэтому константа нарушается -корректность.

Есть ли языковая функция или парадигма дизайна, о которых я не знаю, чтобы помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью, Я использую ссылки на константу повсюду в своем приложении для извлечения данных камеры из видовых экранов САПР без изменения камеры, но моя функция получения выполняет ленивую оценку переменных-членов, если они недопустимы, что нарушает корректность констант.

Есть ли языковая функция или парадигма дизайна, о которой я не знаю, чтобы помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью, Я использую ссылки на константу повсюду в своем приложении для извлечения данных камеры из видовых экранов САПР без изменения камеры, но моя функция получения выполняет ленивую оценку переменных-членов, если они недопустимы, что нарушает корректность констант.

Есть ли языковая функция или парадигма дизайна, о которой я не знаю, чтобы помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью, м не знают, как помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью, м не знают, как помочь с этим? Или ленивое вычисление принципиально несовместимо с константной корректностью? Мне известно о const_cast <>, я никогда не использовал его сам, но прочитал несколько вещей об этом, которые сводятся к следующему: если вы используете его, вы уже где-то ошиблись. Или это будет моим спасителем?

Любой совет будет принят с радостью, Cam

5
задан cmannett85 20 December 2010 в 22:16
поделиться