Llevo unos días peleandome con Direct3D y he decidido empezar aislar toda esa cacharrería en clases (me refiero a la inicialización y la posterior liberación de memoria). Me preguntaba si todo lo que se libera con el método Release, se puede poner en el destructor de la clase? O no, eso lo he de hacer manualmente?
Por favor que alguien me conteste.
A ver si he entendido bien tu pregunta. Dices que tienes una clase que encapsula cosas de DX y preguntas que lo que liberas en Release si lo puedes poner en el destructor?
osea que si esto:
void cVideoDX9::Release()
{
RELEASENULL(m_pD3D9);
delete this;
}
y esto:
void cVideoDX9::Release()
{
delete this;
}
void cVideoDX9::~cVideoDX9()
{
RELEASENULL(m_pD3D9);
}
es correcto?
Si es eso lo que preguntas, ambas formulas son validas. En la primera liberas el interface y luego llamas al destructor, y en la segunda al reves.
A mi personalmente me gusta mas la segunda (suelo poner el Release en el .h)
Era eso justo lo que quería saber gracias.