我有一个名为Mesh
的类包装和OpenGL对象,包含VBO,纹理等。此类继承自QObject
,其父级设置为QGLWidget
。因此,一旦我关闭小部件,它将被QObject系统删除。
但是我有一个问题,因为这个网格类有一个析构函数,可以执行一些OpenGL调用来清理。当QObject子析构函数启动时,OpenGL上下文已被破坏,我得到一个段错误。
如何确保在~Mesh()
上下文被删除之前调用我的QGLWidget
析构函数?
答案 0 :(得分:1)
您可以在Mesh
派生类的析构函数中显式删除QGLWidget
对象,因为您放在那里的所有内容都将在~QGLWidget()
本身之前(以及{{1}之前)执行}负责删除子对象。)
或者您可以将对象设为非指针成员,或将其包装在智能指针中以获得相同的结果。