blob: 715378953587ea59dd193f0d11fccec741945d2e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
pour la gestion des instances d'une classe.
l'objet cr�� actuellement avec CBotVar::Create(nom, pClasse)
est a conserver tel quel, en dehors des vars sur la pile
il faut un autre type de variable pour garder les pointeurs
CBotTypPtClass par exemple
L'instance de la classe doit avoir un compteur d'utilisation
qui est le nombre d'objet de classe CBotTypPtClass qui y r�f�rent.
Le compteur est d�cr�ment� lorsque le pointeur est d�truit,
l'objet supprim� lorsqu'il n'y a plus de pointeurs.
Dans le cas des robots, Daniel cr�e une instance de sa classe "Object"
et peut retourner des pointeurs � cette instance par des routines genre FindRobot()
Object FindRobot(int n) { }
pResult dans ce cas est un pointeur CBotTypPtClass
lorsqu'il a trouv� le robot concern�, il lui faudra faire
pResult->SetPointeur(InstanceDeLaClassObject);
cette op�ration incr�mente le compteur des r�f�rences
--
lorsque le robot est d�truit, l'instance de la classe Object correspondant
est d�truit �galement.
s'il reste des pointeurs � cet objet, et l'on risque la plant�
solution 1:
garder non pas le pointeur � l'objet directement, mais
un index dans une tables de pointeurs
solution 2:
ne pas d�truire l'objet im�diatement lorsqu'il reste des pointeurs
mais le marqu� comme virtuellement d�truit
|