gpt4 book ai didi

c++ - 延迟评估和 const 正确性问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:56 26 4
gpt4 key购买 nike

我制作了一个 openGL 相机类,它使用惰性求值通过 getter 函数提供最终投影或模型- View -投影矩阵。用户在实例的整个生命周期中提供各种相机参数(FOV、位置等),而不是每次更改参数时都重新计算投影矩阵和/或 MVP 矩阵,而是设置“已更改”标志(即旧的缓存矩阵现在无效)。每当用户随后请求更新的最终矩阵时,都会重新计算它,缓存结果,并返回一个 const 引用。

一切听起来都很好,直到我调用我:

const QMatrix4x4& oE_GLCamera::getModelViewProjection() const;

来自 const oE_GLCamera 实例的函数...我在我的应用程序中到处使用 const 引用来从 CAD 视口(viewport)中提取相机数据而不更改相机,但是我的 getter 函数在成员变量无效时对它们执行惰性评估 - 因此打破了 const -正确性。

是否有我不知道的语言特性或设计范式可以帮助解决这个问题?还是惰性评估从根本上与常量正确性不兼容?我知道 const_cast<>,我自己从未使用过它,但阅读了一些关于它的内容,归结为:如果你使用它,你就已经在某个地方出错了。还是它会成为我的救星?

我们将不胜感激任何建议,凸轮

最佳答案

Is there a language feature or design paradigm I'm unaware of to help with this?

也许,可变

标记为 mutable 的类的成员始终是非 const,即使它是通过引用或指向所属类的指针访问的,该类是 const 引用或指向 const 的指针。

关于c++ - 延迟评估和 const 正确性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4494507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com