Tableau de structure - C++ - Programmation
Marsh Posté le 04-02-2006 à 17:14:52
J'avais effectivement pas pensé a vector. Cela dit j'ai du l'employer 1 fois dans ma vie et pas pour des structures
J'ai donc mis la ligne suivante :
Code :
|
La premiere question qui me vient est de savoir si l'on peut assigner une taille.
Ensuite, j'obtient une erreur de compilation :
Model.h:30: error: 'vector' is used as a type, but is not defined as a type.
Enfin, comment assigner des valeurs ?
damier[i].numerocase = i; ??
Marsh Posté le 04-02-2006 à 17:30:36
#include <vector>
et std::vector<Case> damier(100);
tu peux l'utiliser comme un tableau classique (accés aux éléments avec l'opérateur []) et la méthode size() retourne le nombre d'éléments.
http://www.sgi.com/tech/stl/Vector.html
Marsh Posté le 04-02-2006 à 17:41:22
Ca avance, ca avance ^^
J'obtient maintenant d'autres erreurs :
Model.h:29: error: invalid data member initialization
Model.h:29: error: (use `=' to initialize static data members)
Pour info je remets la totalite de mon fichier d'en tête
Code :
|
D'ailleurs en passant, merci pour le lien
Marsh Posté le 04-02-2006 à 17:48:11
ca l'air compilable, mais il n'y a que 27 ligne, elle est ou la ligne 29 ?
et pourquoi tu as besoin de stdio.h ? (d'ailleur faudrais plutot inclure cstdio)
Marsh Posté le 04-02-2006 à 17:53:23
Effectivement c'est un peu bête de faire une copie partielle qd on a des references a des lignes ^^. J'suis pas habitué aux forums
Voila donc la source exacte
Code :
|
L'erreur de compilation renvoie donc à la ligne concernant le "vector<Case>"
Pour les libs, je fais pas trop gaffe en général a mes inclusions, j'ai pour habitude (surement mauvaise) de faire des copiés/collés à la pelle pour les debut de fichier d'en tete.
Marsh Posté le 04-02-2006 à 18:01:55
le .h c'est pour déclarer, pas pour initialiser.
Dans ton .cpp tu fais
Model() : damier(100) { }
Marsh Posté le 04-02-2006 à 18:04:20
Citation : Pour les libs, je fais pas trop gaffe en général a mes inclusions, j'ai pour habitude (surement mauvaise) de faire des copiés/collés à la pelle pour les debut de fichier d'en tete. |
faut faire en fonction des besoins, par exemple dans ton Model.h le seul en-tete necessaire est <vector>
Marsh Posté le 04-02-2006 à 18:23:06
Citation : le .h c'est pour déclarer, pas pour initialiser. |
Et oui, effectivement, le probleme vient de la. Ca compile, et je n'ai plus le pb du debut avec le tableau
Citation : faut faire en fonction des besoins, par exemple dans ton Model.h le seul en-tete necessaire est <vector> |
En fait le pb c'est que je ne sais jamais de quelle librairie j'ai besoin. Du coup quand il en manque je met toute celle que je connais et que j'utilise normalement et voila ce que ca donne. Mais oui dans mon exemple je n'ai pas besoin de tout. Cependant j'inclus egalement les libraires dont j'ai besoin pour le .cpp ds le fichier d'en tete. Du coup j'ai quand meme besoin de certaines parmis celle la ne serais ce que pour les cout (dont je sais pas d'ou il viennent).
En tout cas, merci beaucoup a tous les deux, vous m'avez été d'une precieuse aide
Marsh Posté le 04-02-2006 à 18:36:08
Citation : En fait le pb c'est que je ne sais jamais de quelle librairie j'ai besoin. Du coup quand il en manque je met toute celle que je connais et que j'utilise normalement et voila ce que ca donne. |
Ca passe avec l'experience, enfin quand on utilise une fonction on est censé savoir dans quel en-tete elle est déclarée et en cas d'oublie le compilateur te dis quelle fonction n'est pas déclarée et tu peux rapidement retrouver son en-tete en cherchant dans sa doc
Citation : Cependant j'inclus egalement les libraires dont j'ai besoin pour le .cpp ds le fichier d'en tete. |
tu peux les inclures dans le .cpp
Marsh Posté le 05-02-2006 à 19:51:49
Oui oui , je sais ^^
Il faudrait que je trouve un document ou une page internet qui resume les principales fonctions et les librairies associées. J'ai tendance a ne pas trop me triturer la tête sur les librairies, je reserve plutot ce suplice pour le reste ^^
Marsh Posté le 04-02-2006 à 15:53:55
Bonjour,
J'ai un probleme assez etrange (comme tous les pb d'ailleurs) avec un tableau de structure en C++.
Voila, j'ai une classe Model comme suit :
Model.h
Model.cpp
Avec un tel code, la compilation se déroule bien, mais j'obtient un Instruction illégale quand je lance l'execution.
Ce qui est etrange c'est que lorsque que je fais un tableau de 50 struct, ca marche ...