QOpenGLFunctions不正确

时间:2014-05-24 04:34:46

标签: c++ qt opengl const

假设QOpenGLFunctions对象是类的成员。由于gl*方法在适当的地方未标记为 const ,因此无法在 const 方法中调用它们,即使它们根本不会进行任何状态更改。

我使用QOpenGLFunctions错了吗?

1 个答案:

答案 0 :(得分:2)

这有些哲学,但我可以说你正在使用它"错误"。通过使QOpenGLFunctions成为您班级的成员,您可以说OpenGL函数是您的类状态的一部分。他们真的不是。它们是您的班级使用的东西,但它们不是 您班级的一部分。

您有几种方法可以解决此问题:

  1. 您可以将mutable添加到成员定义(mutable QOpenGLFunctions m_...)。
  2. 您可以使成员变量成为OpenGLFunctions的指针,并在您的类的构造函数中分配对象。
  3. 使用mutable对我来说总是让人觉得有点笨拙,即使它有合法用途。在这种情况下,我显然更喜欢选项2。除了解决你的const-correctness问题之外,它还表达了你的类和OpenGLFunctions之间较弱的耦合,它与我在引言中解释的正确关系非常匹配。