Déclaration d'un tableau statique [Résolu]

Signaler
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Bonjour, j'aimerais savoir s'il y a un moyen de déclarer un grand tableau statique. J'ai une classe qui ressemble a ceci :

class MaClasse
{
public:
...
private:

static MaClasse* tableau[200];
};

MaClasse* tableau[] = {0,... /*et c'est ici que ça coince, car pour déclarer 200 éléments...  */




J'ai essayé de mettre une boucle for , mais le compilateur m'indique une erreur.


Merci de vos réponses





Pop70

7 réponses

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Si tu cherches à mettre tous les éléments de "MaClasse* tableau[]" à zéro,
tu peux faire MaClasse* tableau[] = {0};

Mais pourquoi faire un tableau statique ?
Ne pourrais-tu pas utiliser un std::vector, qui se redimensionne tout seul ?
std::vector<MaClasse*> _tableau


_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Donc c'est une tableau de pointeurs que tu veux initialiser.
fais en premier lieu un define :
#define MAX_OBJETs 200

ajoute une variable statique à ta classe :
static bool m_IsInit;

que tu initialises à false dans le fichier cpp
bool MaClasse::m_IsInit = false;

puis dans le contructeur de ta classe :
ajoute ceci en tout premier:
if(m_IsInit == false)
{
for(int i = 0; i < MAX_OBJETS; i++)
tableau[i] = 0;
//ou bien ZeroMemory
m_Isinit = true;
}

Bon codage
louis
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
Ta classe n'est pas un entier.
Tu veux déclarer un tableau de pointeurs de ta classe?
louis
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Ou bien stocker des pointeurs de ta classe?


louis
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
9
En fait je veux faire un tableau de pointeurs statique de ma classe où y stocker les adresses des objets créés pour pouvoir affecter une modification à leur variable membre depuis une fonction statique.

class MaClass
{
public:

MaClasse (int nb) : wVarObj(nb)
 { 
nbrObj++;       //Pour actualiser le nombre d'objets
tableau[nbrObj - 1] = this; //Pour garder l'adresse
 }

static modifTousObj(int nb) //méthode statique qui appel à modifier tous les objets
{
for (int i = 0; i < nbrObjet; i++)
tableau[i]->setVarObj(10); //Modification de la variable wVarObj à tous les
                           //objets par l'intermediaire d'une fonction membre
}

void setVarObj(int nb) {wVarObj = nb;}//fonction membre qui modifie wVarObj

private:

int wVarObj;    //Variable membre 
static int nbrObj; //Nombre d'objets créés
static MaClasse *tableau [200]; //Tableau qui garde l'adresse de tous les objets

};

int MaClasse::nbrObj = 0; //initialisation de la variable nbrObjet

... //Et initialisation du tableau que je n'arrive pas a faire



Merci de ton aide

Pop70
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
ou tu peux essayer :
MaClasse* MaClasse::tableau[] ={0};
dans le fichier cpp.
Effectivement std::vector serait plus approprié.


louis
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
9
Merci beaucoup !


Pop70