tableau de structure

tableau de structure - C++ - Programmation

Marsh Posté le 13-06-2003 à 09:07:21    

Dans mon projet, j'aurais besoin de creer un tableau de structures. Voici la structure

Code :
  1. struct AwbData
  2. {
  3. Des entiers et des CString
  4. } *awb_data;


et voici comment je cree le tableau

Code :
  1. awb_data = new AwbData[nb_lines];


 
Plus loin, lors de l'execution du programme j'ai besoin d'element supplementaires dans mon tableau donc j'utilise  

Code :
  1. realloc(awb_data,nb_lines+10*sizeof(AwbData));

mais ca ne fonctionne pas. Mes elements supplementaires ne sont pas alloues.
Comment dois je faire?
 :??:

Reply

Marsh Posté le 13-06-2003 à 09:07:21   

Reply

Marsh Posté le 13-06-2003 à 09:08:46    

Déjà c pas une bonne idée de mélanger les opérateur d'allocation du C++ avec les fonction d'allocation C. Don tu me vire le new et tu met un malloc à la place.


---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 09:09:45    

LetoII a écrit :

Déjà c pas une bonne idée de mélanger les opérateur d'allocation du C++ avec les fonction d'allocation C. Don tu me vire le new et tu met un malloc à la place.


ca fonctionne pas non plus, c'est pour ca que j'ai voulu essayer avec new

Reply

Marsh Posté le 13-06-2003 à 09:12:34    

realloc tu oublie gentillement en C++, ca ne fait pas l'appel de constructeur, fo que tu te farcisse le tout a la main a coup de vrai reallocation (new) et operateur de copie

Reply

Marsh Posté le 13-06-2003 à 09:13:05    

Code :
  1. awb_data = realloc(awb_data,nb_lines+10*sizeof(AwbData));


 
C bien de récupérer le nouveau pointeur.
 


---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 09:14:20    

t'es sur de pas vouloir utiliser un std:vector?

Reply

Marsh Posté le 13-06-2003 à 09:16:31    

LetoII a écrit :

Code :
  1. awb_data = realloc(awb_data,nb_lines+10*sizeof(AwbData));


 
C bien de récupérer le nouveau pointeur.
 
 


 :non: ca ne change rien

Reply

Marsh Posté le 13-06-2003 à 09:18:10    

je vous montre quand meme comment j'avais fait mon malloc parce que si ca tombe j'ai fait une bete erreur.

Code :
  1. awb_data = (AwbData*)malloc(nb_lines*sizeof(AwbData));


Voila, donc ca, ca ne fonctionne pas. Le pgm plante quand je veux mettre quelque chose dans le tableau.
C'est pourtant correct non?

Reply

Marsh Posté le 13-06-2003 à 09:18:56    

Code :
  1. awb_data = realloc(awb_data,(nb_lines+10)*sizeof(struct AwbData));


 
Et les parenthéses ça aide, pas réveillé moi ce matin.
 
 
Et je pense qu'il manque un struct là.


Message édité par LetoII le 13-06-2003 à 09:19:36

---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 09:19:49    

(je veux pas dire, mais Taz a parlé d'or la, remballez vos mallocs a la con et arretz de vous prendre la tete)

Reply

Marsh Posté le 13-06-2003 à 09:19:49   

Reply

Marsh Posté le 13-06-2003 à 09:19:53    

polo021 a écrit :

Dans mon projet, j'aurais besoin de creer un tableau de structures. Voici la structure

Code :
  1. struct AwbData
  2. {
  3. Des entiers et des CString
  4. } *awb_data;




 
ca serait pas mieux CA :
 

Code :
  1. struct AwbData
  2. {
  3. Des entiers et des CString
  4. } awb_data;
  5. typedef awb_data* pAwbData;


 

Code :
  1. pAwb_data = new AwbData[nb_lines];


 
Juste mes 2cts


Message édité par Joel F le 13-06-2003 à 09:20:15
Reply

Marsh Posté le 13-06-2003 à 09:20:15    

++Taz a écrit :

t'es sur de pas vouloir utiliser un std:vector?


 
 :jap: Ce serait tellement mieux. D'un autre côté s'il veut faire du pure C [:spamafote]


---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 09:20:45    

LetoII a écrit :


 
 :jap: Ce serait tellement mieux. D'un autre côté s'il veut faire du pure C [:spamafote]


 
Mais nan il veut pas faire du pure C vu qu'il la tente avec des new :D

Reply

Marsh Posté le 13-06-2003 à 09:21:11    

Ah ben si c du C++, std::vector all the way !

Reply

Marsh Posté le 13-06-2003 à 09:22:47    

Reply

Marsh Posté le 13-06-2003 à 09:56:11    


include <vector.h> fonctionne pas tres bien.

Reply

Marsh Posté le 13-06-2003 à 09:57:27    

T'as pensé au

Code :
  1. using namespace std

Reply

Marsh Posté le 13-06-2003 à 09:58:56    

polo021 a écrit :


include <vector.h> fonctionne pas tres bien.


 
c'est plus <vector>

Reply

Marsh Posté le 13-06-2003 à 09:59:15    

polo021 a écrit :


include <vector.h> fonctionne pas tres bien.


#include <vector>
tout court...?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-06-2003 à 09:59:19    

polo021 a écrit :


include <vector.h> fonctionne pas tres bien.


 
c #include <vector>
 
Edit: grillaid


Message édité par LetoII le 13-06-2003 à 09:59:41

---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 10:01:09    

LetoII a écrit :


 
c #include <vector>
 
Edit: grillaid


#include <vector>
 
 
fatal error C1083: Cannot open include file: 'vector': No such file or directory
 
#include <vector>
using namespace std; c'est bien comme ca? (ca marche pas non plus)

Reply

Marsh Posté le 13-06-2003 à 10:01:42    

polo021 a écrit :


#include <vector>
 
 
fatal error C1083: Cannot open include file: 'vector': No such file or directory
 
#include <vector>
using namespace std; c'est bien comme ca? (ca marche pas non plus)


quel compilo? :heink:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-06-2003 à 10:03:33    

skeye a écrit :


quel compilo? :heink:  


 
visual à ts les coup  [:ddr555]


---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 10:05:10    

LetoII a écrit :


 
visual à ts les coup  [:ddr555]  


avec taz dans le coin on est foutu, planquez vous [:lacuna coil]

Reply

Marsh Posté le 13-06-2003 à 10:07:12    

chrisbk a écrit :


avec taz dans le coin on est foutu, planquez vous [:lacuna coil]


 
 :lol:


---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 10:07:43    

LetoII a écrit :


 
visual à ts les coup  [:ddr555]  


heu... oui
Donc je fais quoi? :??: A part changer de compilo bien sur!

Reply

Marsh Posté le 13-06-2003 à 10:08:24    

LetoII a écrit :


 
visual à ts les coup  [:ddr555]  


Très juste au vu des erreurs...mais ca marche tré bien chez moi! :pt1cable:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-06-2003 à 10:08:27    

polo021 a écrit :


heu... oui
Donc je fais quoi? :??: A part changer de compilo bien sur!


 
ben rien, normalement la stl est fourni avec VC donc ta config est bricoleuse, ou bien t'en DL une (genre SGI)

Reply

Marsh Posté le 13-06-2003 à 10:10:07    

polo021 a écrit :


heu... oui
Donc je fais quoi? :??: A part changer de compilo bien sur!


 
you lose : pas de stl sur pocket pc.
 
mais y a surement des gens ki ont du en refaire une, faut chercher.

Reply

Marsh Posté le 13-06-2003 à 10:11:53    

(je vous surveille, et je constate que la crainte est le meilleur des conditionnement)
 

Spoiler :

Mais j'aurais apprécié une petite reflexion du genre "Cstring ça suce des ours polaires, std::string ça r0}{0[2 !"

n°426103
Konar
Posté le 13-06-2003 à 10:13:21  profilanswer
 

++Taz a écrit :

(je vous surveille, et je constate que la crainte est le meilleur des conditionnement)
 

Spoiler :

Mais j'aurais apprécié une petite reflexion du genre "Cstring ça suce des ours polaires, std::string ça r0}{0[2 !"




 
entierement d'accord sur ce point.

n°426106
polo021
Posté le 13-06-2003 à 10:14:03  profilanswer
 

++Taz a écrit :

(je vous surveille, et je constate que la crainte est le meilleur des conditionnement)
 

Spoiler :

Mais j'aurais apprécié une petite reflexion du genre "Cstring ça suce des ours polaires, std::string ça r0}{0[2 !"




bon ben sinon je peux pas allouer tout betement un tableau de structures??


Message édité par polo021 le 13-06-2003 à 10:14:21
n°426107
LetoII
Le dormeur doit se réveiller
Posté le 13-06-2003 à 10:14:21  profilanswer
 

++Taz a écrit :

(je vous surveille, et je constate que la crainte est le meilleur des conditionnement)
 

Spoiler :

Mais j'aurais apprécié une petite reflexion du genre "Cstring ça suce des ours polaires, std::string ça r0}{0[2 !"




 
 [:ddr555]


---------------
Le Tyran
n°426109
LetoII
Le dormeur doit se réveiller
Posté le 13-06-2003 à 10:16:52  profilanswer
 

polo021 a écrit :


bon ben sinon je peux pas allouer tout betement un tableau de structures??


 

Code :
  1. typedef struc bidule
  2. {
  3. //ton code
  4. } BIDULE;
  5. BIDULE *truc = (BIDULE *)malloc(taille*sizeof(BIDULE));
  6. truc = (BIDULE *)realloc(truc,nouvelleTaille*sizeof(BIDULE));


 
Edit ça ca marche en théorie.


Message édité par LetoII le 13-06-2003 à 10:17:16

---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 10:17:52    

LetoII a écrit :


 

Code :
  1. typedef struc bidule
  2. {
  3. //ton code
  4. } BIDULE;
  5. BIDULE *truc = (BIDULE *)malloc(taille*sizeof(BIDULE));
  6. truc = (BIDULE *)realloc(truc,nouvelleTaille*sizeof(BIDULE));


 
Edit ça ca marche en théorie.


C'est ce qu'il a posté au début, non? :??:  
Remarque il a pas dit ce qu'il se passait...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-06-2003 à 10:18:08    

polo021 a écrit :


bon ben sinon je peux pas allouer tout betement un tableau de structures??

allouer betement tu peux, reallouer tu peux pas. utilise std::vector et tu pourras te concentrer sur autre chose dans ton programme

Reply

Marsh Posté le 13-06-2003 à 10:19:54    

LetoII a écrit :


 

Code :
  1. typedef struc bidule
  2. {
  3. //ton code
  4. } BIDULE;
  5. BIDULE *truc = (BIDULE *)malloc(taille*sizeof(BIDULE));
  6. truc = (BIDULE *)realloc(truc,nouvelleTaille*sizeof(BIDULE));


 
Edit ça ca marche en théorie.

et non ça marche pas mais alors pas du tout. comme malloc n'appelle pas le constructeur, et ben t'es fucken fucked, ton instance est pas construite, ses membres non plus, comportement indéfini. pour un int ça passera, par contre le premier accès à ta string c'est erreur de segmentation
 
il va de soi que ce topic est clairement C++: pas tant à cause du new, mais à cause de la déclaration initiale de la struct AwbData


Message édité par Taz le 13-06-2003 à 10:21:08
Reply

Marsh Posté le 13-06-2003 à 10:20:32    

++Taz a écrit :

allouer betement tu peux, reallouer tu peux pas. utilise std::vector et tu pourras te concentrer sur autre chose dans ton programme


 
apparement il peut pas non plusutiliser les vector  [:ddr555]


---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 10:21:25    

++Taz a écrit :

et non ça marche pas mais alors pas du tout. comme malloc n'appelle pas le constructeur, et ben t'es fucken fucked, ton instance est pas construite, ses membres non plus, comportement indéfini. pour un int ça passera, par contre le premier accès à ta string c'est erreur de segmentation


 
C une structure bannane on s'en cogne du constructeur.
 
Et s'il veut utiliser des objets il fait des new et des delete et il oublie realloc.


Message édité par LetoII le 13-06-2003 à 10:22:17

---------------
Le Tyran
Reply

Marsh Posté le 13-06-2003 à 10:22:14    

LetoII a écrit :


 
apparement il peut pas non plusutiliser les vector  [:ddr555]  

quand tu veux planter un cloup, si ton marteau a pas de manche, tu changes de marteau, tu enfonces pas le clou avec ta tête


Message édité par Taz le 13-06-2003 à 10:22:26
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed

© 2018 Forum. All Rights Reserved.