Bonjours à tous,
Je suis en train de matter les sources d'un code et il y à quelque chose que je trouve bizarre. Voici le problème:

Texture.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class CTexture
{
public:
    virtual ~CTexture();
 
    [...]
 
protected:
    LPRICETEXTURE   m_pTexture; //C'est ça qui nous intéresse
};
Texture.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
CTexture::~CTexture(void)
{
 //Il n'y a pas de free(m_pTexture); ici. Normal?
}
Et dans l'autre class, hérité de la classe précédente

OGLTexture.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class COGLTexture : public CTexture //elle hérite de la class CTexture
{
    friend class COGLRenderTexture;
public:
    ~COGLTexture();
 
    [...]
};
OGLTexture.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
COGLTexture::~COGLTexture()
{
    [...]
    free(m_pTexture);
    [...]
}
En gros, ce qui m'étonne, c'est que ce n'est pas la class CTexture qui "free" sont m_pTexture mais la class "héritière". Ça ne me semble pas correct.
J'aurai plutôt écris les choses comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
COGLTexture::~COGLTexture()
{
    [...]
    //free(m_pTexture); On vire le free ici
    [...]
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
CTexture::~CTexture(void)
{
    free(m_pTexture); //Et je le met ici
}
Qu'en pensez vous?

Merci d'avance pour vos avis éclairés!