Trouver les instances d'une classe ???

cs_Arkko Messages postés 192 Date d'inscription mercredi 26 décembre 2001 Statut Membre Dernière intervention 31 janvier 2007 - 8 juil. 2003 à 17:14
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 26 juil. 2004 à 22:19
Salut ...
Est-ce quelqu'un connais un moyen de trouver toute les instances d'une classe?
Ex:
class uneClasse{
};

uneClasse Allo;
uneClasse KechosedOtre;

pis ca nous dirais que les instance de "uneClasse" sont Allo et KechosedOtre

kelkkun a une id ?

4 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
8 juil. 2003 à 18:06
Non, ce n'est pas possible directement mais ca doit être réalisable en créant une super-classe n'ayant qu'un constructeur et un destructeur. Dans le constructeur de cette classe, tu incrémentes ton compteur, dans le destructeur, tu le décrémentes.

Mais ca n'est intéressant que dans le cas d'une allocation dynamique des différents objets car dans ton exemple tu connais forcément le nombre d'instances car c'est toi qui les crées.

Kaid - kaid.fr.st
0
cs_Arkko Messages postés 192 Date d'inscription mercredi 26 décembre 2001 Statut Membre Dernière intervention 31 janvier 2007
8 juil. 2003 à 23:41
Oui je sais que je connais les instances de cette classe ... c'est parce que pour un petit moteur 3d dans un dll je connais pas nécésairrement combien d,instance l'autre crée
j'aurais voulu me servir de ca pour executer une fonction dans chacune des instances ...

ex:

class Scene{
void RenderMesh(void);
};

class Mesh{
void Render(void);
};

void Scene:RenderMesh(void)
{
//Apelle la fonction Render pour toute les mesh
}

..............
0
cs_Arkko Messages postés 192 Date d'inscription mercredi 26 décembre 2001 Statut Membre Dernière intervention 31 janvier 2007
8 juil. 2003 à 23:45
oups une faute de syntaxe :P
c'est
void Scene::RenderMesh(void)
au lieu de
void Scene:RenderMesh(void)

:)
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
26 juil. 2004 à 22:19
tu crées une variable de classe statique pour chacune des classe, que tu incremente a chaque appel au constructeur.
par exemple
class UneClass
{

public:

static NbInstances = 0;

UneClasse (void) {++NbInstances}
~UneClasse (void) {--NbInstances}

}

int main (void)
{
cout << UneClass::NbInstances;
UneClass A;
cout << UneClass::NbInstances;

return 0;
}

chui pas sur de tt le code, mais teste le et dis moi. j'ai peut-etre oublié qqs éléments de sybntaxe, et peut-etre fait qqs confusions, mais a priori ca doit marcher. a priori pour eviter des conneries, met plutot ta statique en private, et une fonction accesseur en public (fonction static aussi). ca devrait marcher. verifie et dis moi (si cest pas trop tard, paske je vois ke le message est vieux, chui tombé dessus par hasard...tres tres vieux, maissi tavais tjs pas trouvé, ca peut servir, et ca peut servir a dautres personnes
0
Rejoignez-nous