Q1 и Q2: не делайте этого! .Вы не можете использовать std::auto_ptr<GLUquadricObj>
, поскольку это ресурс, который должен быть освобожден специализированным удалителем gluDeleteQuadric
.Как правило, в движках, управляемых состоянием, таких как OpenGL и GLU, не используются статики - ну, не используйте их никогда, но в контексте OpenGL это особенно опасно.
Опять же, серьезно:
Q1.не делай этогоНет никакой выгоды в хранении статического 4-элементного массива целых чисел.Определите это локально, где вам это нужно.Мой совет: не используйте массивы в стиле c, вместо этого скажите:
const std::array<int, 4> tArray = {1, 1, 1, 1};
Q2.Рекомендации RAII, приведенные выше, хороши, но вам нужна оболочка RAII, которая поддерживает пользовательские удаления:
std::shared_ptr<GLUquadricObj>
tMyQuadric(glCreateQuadric(), glDeleteQuadric);
Теперь используйте ее по своему желанию, она будет закрыта и уничтожена автоматически, когда они выйдут из области видимости и программыне имеет никакого отношения к этому.О, я вижу, что вышеприведенная оболочка RAII также будет работать, но, пожалуйста: сделайте одолжение себе, своим последователям и коллегам: используйте стандартные библиотечные конструкции.