1

私は次のことを得る

x.cpp: In member function ‘X’:
x.cpp:153:10: warning: possible problem detected in invocation of delete operator:
x.cpp:146:19: warning: ‘quadric’ has incomplete type /usr/include/GL/glu.h:271:7: warning: forward declaration of ‘struct GLUquadric’
x.cpp:153:10: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.

このコードで

146: GLUquadricObj * quadric;
147: quadric = gluNewQuadric();
148: gluQuadricNormals(quadric, GLU_SMOOTH);
149: gluQuadricTexture(quadric, GL_TRUE);
150:
151: gluSphere(quadric, object.radius(), slices, stacks);
152:
153: delete quadric; 

なぜそうするのか理解しています.GLUquadricObjは実際には前方宣言ですが、

この警告を回避したい。

その唯一の機能について、この警告を抑制したいと思います。

または、正しいヘッダーを含めて警告を解決してください。/usr/include/GL で grep を使用しましたが、完全なタイプが見つかりませんでした。

Arch Linux を使用しています

メサ 7.8.2-3

gcc 4.5.1-1

4

2 に答える 2

4

GLUquadricObj次を使用して削除する必要があります。

gluDeleteQuadric(GLUquadricObj *);
于 2010-11-09T01:15:51.377 に答える
1

deleteで割り当てられていないオブジェクトには使用しないでnewください。OpenGL について何も知らなくても、gluDeleteQuadricここで使用する必要があると確信しています。

于 2010-11-09T01:17:43.113 に答える