Ok merci. Par contre j'ai de la peine à voir comment je peux implémenter un compteur de références.
En imginant que je mette sur ma texture:
int refCount;
Texture *refObject;
Un objet unique aura refCount = 0 et refObject = NULL. Quand je fais:
Texture tex1("image.bmp");
Texture tex2 = tex1;
tex2 aura refObject = tex1 et j'augmenterai le compteur refCount de tex1 (le refCount de tex2 n'est donc pas utilisé). Ensuite si je détruis tex2 je décrémente tex2->refObject->refCount (donc le refCount de tex1).
Problème: si je veux détruire tex1, ça va causer souci dans tous les cas puisque l'objet tex1 référencé par tex2 n'existe plus...
Est-ce que je suis obligé de faire une classe "MemBlock" qui remplace mon malloc, et en interne manipuler mon bloc avec des:
MemBlock->getCopy() ou un copy constructor qui incrémente le compteur de références et renvoie une référence vers l'objet
MemBlock->free() qui décrémente le compteur et détruit l'objet s'il atteint 0
Mais en tous cas le problème c'est que je ne peux pas utiliser "delete" sur ce bloc. C'est pour ça que je suis obligé de le wrapper parce que j'aimerais que l'utilisateur puisse effacer sa texture sans se poser de questions...
Désolé si je suis pas trop clair
