Attribut de classe de la STL

Signaler
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003
-
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003
-
Slut,
je définis un attribut de classe :
static vector<vector<Organism*> > vectorg;
qui est donc un tableau de pointeurs sur des instances de la classe Organism.
Je l'utilise dans une autre classe amie:
Organism::vectorg.resize(nx);
et aussi dans une fonction qui n'est membre d'aucune classe, en écrivant :
Organism::getVectorg()[ix][iy]

Mais il y a manifestement un problème, voilà l'erreur que j'obtiens:
[Linker Error] Unresolved external 'Organism::vectorg' referenced from C:\... (je vous mets pas tout le chemin, mais il s'agit du fichier objet gap_unit1.obj)

Je ne comprends pas cette erreur et ce qu'il faut corriger.
Si vous avez une idée... Merci
MLine

4 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Est-ce que tu n'aurais pas oublié cette ligne dans ton fichier CPP:
vector<vector<Organism*> > MACLASSE::vectorg;

Kaid - kaid.fr.st
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003

euh... la déclaration
static vector<vector<Organism*> > vectorg;
a lieu dans la classe, donc dans le header gap_unit.h. (pas besoin de spécifier MACLASSE donc)

Il faut vraiment redéclarer ça :
vector<vector<Organism*> > MACLASSE::vectorg;
dans le cpp ??? Si oui, où ?
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Pour déclarer un attribut statique dans une classe il faut ajouter la ligne que je t'ai donné dans le CPP, juste après l'inclusion des headers par exemple. C'est comme ca pour tous les attributs statiques.

Kaid - kaid.fr.st
Messages postés
20
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
11 juin 2003

Merci beaucoup ;)