Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1242 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] pb de typedef et struc/vector (rézolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] pb de typedef et struc/vector (rézolu)

n°427530
farib
Posté le 14-06-2003 à 13:44:49  profilanswer
 

somme.cpp:25: template-argument `main()::MyStruct' uses local type `
   main()::MyStruct'
somme.cpp:25: template argument 2 is invalid
somme.cpp:25: ISO C++ forbids declaration of `type name' with no type
 
typedef struct MyStruct { int valeur ; int indice ;} ;
vector < vector < MyStruct > > S ;
 
 
 
 
 :heink:  :heink:


Message édité par farib le 14-06-2003 à 14:01:04
mood
Publicité
Posté le 14-06-2003 à 13:44:49  profilanswer
 

n°427531
kadreg
profil: Utilisateur
Posté le 14-06-2003 à 13:49:43  profilanswer
 

http://www.chezmoicamarche.com [:spamafote]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°427532
farib
Posté le 14-06-2003 à 13:50:39  profilanswer
 


c clair....
 
comprend pas


Message édité par farib le 14-06-2003 à 13:51:33
n°427534
kadreg
profil: Utilisateur
Posté le 14-06-2003 à 13:52:08  profilanswer
 

Montre un peu plus de code


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°427536
farib
Posté le 14-06-2003 à 13:53:41  profilanswer
 

Code :
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std ;
  5. int main()
  6. {
  7. int p = 3 ; int h=7 ;
  8. cout << p << " matieres , " << h << " heures de revision." << endl;
  9. vector< vector<int> > N(p) ;
  10. for (int i = 0;  i < p ; i++)
  11. {
  12.  N[i]=vector<int>(h+1);
  13.  fill(N[i].begin(),N[i].end(),0);
  14. }
  15. N[0][0] = 1 ; N[0][1] = 2 ;N[0][2] = 2 ;N[0][3] = 3 ;N[0][4] = 5 ;N[0][5] = 6 ; N[0][6] = 8 ; N[0][7] = 10 ;
  16. N[1][0] = 2 ; N[1][1] = 4 ;N[1][2] = 5 ;N[1][3] = 5 ;N[1][4] = 6 ;N[1][5] = 6 ; N[1][6] = 6 ; N[1][7] = 7 ;
  17. N[2][0] = 0 ; N[2][1] = 1 ;N[2][2] = 2 ;N[2][3] = 2 ;N[2][4] = 4 ;N[2][5] = 6 ; N[2][6] = 7 ; N[2][7] = 8 ;
  18. typedef struct MyStruct { int valeur ; int indice ;} ;
  19. vector < vector < MyStruct > > S ;
  20. return 0;
  21. }

n°427537
skeye
Posté le 14-06-2003 à 13:56:04  profilanswer
 

farib a écrit :

Code :
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std ;
  5. int main()
  6. {
  7. int p = 3 ; int h=7 ;
  8. cout << p << " matieres , " << h << " heures de revision." << endl;
  9. vector< vector<int> > N(p) ;
  10. for (int i = 0;  i < p ; i++)
  11. {
  12.  N[i]=vector<int>(h+1);
  13.  fill(N[i].begin(),N[i].end(),0);
  14. }
  15. N[0][0] = 1 ; N[0][1] = 2 ;N[0][2] = 2 ;N[0][3] = 3 ;N[0][4] = 5 ;N[0][5] = 6 ; N[0][6] = 8 ; N[0][7] = 10 ;
  16. N[1][0] = 2 ; N[1][1] = 4 ;N[1][2] = 5 ;N[1][3] = 5 ;N[1][4] = 6 ;N[1][5] = 6 ; N[1][6] = 6 ; N[1][7] = 7 ;
  17. N[2][0] = 0 ; N[2][1] = 1 ;N[2][2] = 2 ;N[2][3] = 2 ;N[2][4] = 4 ;N[2][5] = 6 ; N[2][6] = 7 ; N[2][7] = 8 ;
  18. typedef struct MyStruct { int valeur ; int indice ;} ;
  19. vector < vector < MyStruct > > S ;
  20. return 0;
  21. }

 


Peut-etre
 

Code :
  1. vector < vector < struct MyStruct > > S ;

 
 
non?

n°427538
farib
Posté le 14-06-2003 à 13:57:23  profilanswer
 

bah c un typedef mystruct
v essayer qd même

n°427540
kadreg
profil: Utilisateur
Posté le 14-06-2003 à 13:59:13  profilanswer
 

Evite de définir des type locaux à une fonction, ils ne sont pas visible dans les fonctions appelées. Ici, MyStruct n'est connu que dans main, donc les fonctions de la classe vector ne le connaissent pas et sont donc incapables de les utiliser.
 
Met tes déclarations de type en dehors de toutes fonctions.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°427541
skeye
Posté le 14-06-2003 à 14:00:21  profilanswer
 

farib a écrit :

bah c un typedef mystruct
v essayer qd même


bah si mes souvenirs sont bons en faisant

Code :
  1. typedef struct MyStruct { int valeur ; int indice ;} ;


Tu dis que  
"struct MyStruct" contient "int valeur ; int indice ;"
 
Sinon tu fais un  

Code :
  1. typedef struct MyStruct { int valeur ; int indice ;} MyStruct;


 
[edit]
Ou alors je raconte n'importe kwa, c'est possible aussi... [:skeye]


Message édité par skeye le 14-06-2003 à 14:00:56
n°427542
farib
Posté le 14-06-2003 à 14:00:29  profilanswer
 

effectivement
 
j'étais distrait

mood
Publicité
Posté le 14-06-2003 à 14:00:29  profilanswer
 

n°427543
Taz
bisounours-codeur
Posté le 14-06-2003 à 14:00:57  profilanswer
 

euh on fait du C++ mec,
 
le typedef ne sert à rien
 
tu peux directement ecrire
 
Mastruct u;
 
tout ceux chez qui ça marche, je sens du VC
 
 
si tu veux quand meme renommer ton type
 
struct MyStruct;
typedef MyStruct MaStructure;

n°427544
farib
Posté le 14-06-2003 à 14:02:05  profilanswer
 

j'ai besoin de typedef a cause du vecteur

n°427547
kadreg
profil: Utilisateur
Posté le 14-06-2003 à 14:05:22  profilanswer
 

++Taz a écrit :


tout ceux chez qui ça marche, je sens du VC


 
gcc 2.95.4
 
Je suis surpris que ça compile aussi :
 

Code :
  1. #include <vector>
  2. typedef struct MyStruct { int valeur ; int indice ;} ;
  3. vector < vector < MyStruct > > S ;


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°427550
Taz
bisounours-codeur
Posté le 14-06-2003 à 14:09:01  profilanswer
 

car ça ne doit pas
 
 
c'est tout à fait légal ISO C++ forbids declaration of `type name' with no type, j'aurais répondu la même chose

n°427551
skeye
Posté le 14-06-2003 à 14:14:10  profilanswer
 

Pour ma culture, c'est des conneries ce que j'ai raconté? Des souvenirs de C? :??:

n°427555
Taz
bisounours-codeur
Posté le 14-06-2003 à 14:25:36  profilanswer
 

oui

n°427594
farib
Posté le 14-06-2003 à 16:03:30  profilanswer
 

++Taz a écrit :

car ça ne doit pas
 
 
c'est tout à fait légal ISO C++ forbids declaration of `type name' with no type, j'aurais répondu la même chose


 
c'est normal que ca compile.
 
j'avais pas fé gaffe, le typedef était dans le main avec le S, il fallait que le typedef soit en dehors ( ca pourrait marcher pourtant, le typedef avait portée jusqu'a la fin du main ???)
 
la ca marche pour kadreg c juste que S est déclaré en global aussi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] pb de typedef et struc/vector (rézolu)

 

Sujets relatifs
dans quel cas est il preferable d'utiliser vector ou linkedlist ?vector ou tableau
[C++] Un vector contenant des iterateur de liste, c'est possible ?[c++] Passage par référence d'un vector <>
[vector<int>] intialisation concise avec des élementsC++, gdb, vector....
Tableau dynamique à deux entrées avec vectorProbleme avec vector
[C++] valarray/vectorComment créer des vector...
Plus de sujets relatifs à : [C++] pb de typedef et struc/vector (rézolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR