3Close5
GoldenCrystalOn the 2011-01-05 at 12:24pm
Mais non, n'embrouille pas les choses tongue
Tout simplement un handle, c'est juste un objet (au sens langage courant, pas C/C++ hein…) qui en représente un autre, d'une manière que tu n'a pas à connaître.
À en juger par le nom, tu peux deviner qu'on a appelé ça comme ça (handle, « poignée ») parce qu'une poignée te permet de t'accrocher à l'objet sans le toucher directement, et c'est exactement ce que ça fait dans la manière dont on s'en sert.
Tous les handle sont bien des handle, chacun au même titre que les autres
Un pointeur peut bien être un handle, mais si tu sais que c'est un pointeur alors c'est un mauvais handle. Une grande partie de l'utilité d'un handle implique une opacité de ce qui est derrière ainsi que de la méthode employée pour ce faire.
Un handle peut être implémenté par un pointeur, un index dans un tableau, ou bien même par un numéro totalement aléatoire qui va indexer une entrée dans une table de hachage, mais ça ne te regarde pas plus que ce qu'il cache derrière.
Il y a des handle (par exemple en API WIn32) dont le fonctionnement interne a été dévoilé (HMODULE ou HINSTANCE par exemple) mais ça ne veut pas dire que tu dois utiliser ces connaissances dans ton programme, ni que ces informations resteront vraie tout le temps.
Et il y a une règle implicite qui est que si tu violes la règle de l'opacité, alors tu n'a aucune garantie que ton code fonctionne sur toutes les versions futures (ou même passées) du produit que tu vises. Bref, c'est mal, et c'est crade ! Un handle c'est juste un handle et rien d'autre smile

PS: T'as oublié Weak et WeakTrackResurrection tongue