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

  FORUM HardWare.fr
  Programmation
  C++

  Type non reconnu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Type non reconnu

n°1264017
gen_gonk
Posté le 11-12-2005 à 16:34:49  profilanswer
 


 
Bonjour à tous,
 
je souhaite me créer moi même une classe permettant de modéliser des Graphes en mémoire.
J'ai donc une classe Graphe et une classe Noeud et une classe Arc.
 
J'utilise donc le code ci-dessous :
 

Code :
  1. struct Arc
  2. {
  3.  int curs; // l'arc pointe vers un autre noeud dans le liste
  4. };
  5. class Noeud
  6. {
  7.         public :
  8.     vector<Arc> lst_arc; // chaque noeud est relié à d'autres par des arcs
  9.             Point pos; // la position du noeud dans le graphe (utile pour l'image du graphe)
  10.             double aire;
  11.             Noeud();
  12.   Noeud(int,int); 
  13. };
  14. class Graphe
  15. {
  16.         private :
  17.   vector<Noeud> lst_noeud; // un graphe est constitué d'une liste de noeuds
  18.   Point max_coord; // le noeud le plus en bas à droite
  19.   int nb_graphe;
  20.  public :
  21.   Graphe();
  22.   void ajouter_noeud(Noeud);
  23.   int taille();
  24.   Noeud get_noeud(int);
  25. };


 
A la compilation, j'ai le message d'erreur suivant :
 
- type/value mismatch at argument 1 in template parameter list for `template<class _Tp, class _Alloc> class std::vector'
- expected a type, got `Arc'
- template argument 2 is invalid
 
Il me laisse penser que le type Arc n'est pas reconnu, puisque quand je mets par exemple le type "int", il compile sans ronchonner.
Ce qui est bizarre c'est que je n'ai aucun problème avec le vecteur de Noeud, juste le vecteur d'Arc !
 
Quelqu'un a-t-il une idée ?
 
Merci bien !

mood
Publicité
Posté le 11-12-2005 à 16:34:49  profilanswer
 

n°1264018
skeye
Posté le 11-12-2005 à 16:37:31  profilanswer
 

Euh t'as fait une struct, pas une classe, et pas de typedef, ça parait normal, non? :??:


Message édité par skeye le 11-12-2005 à 16:37:46

---------------
Can't buy what I want because it's free -
n°1264020
gen_gonk
Posté le 11-12-2005 à 16:41:46  profilanswer
 

j'ai modifié ma structure en  
 

Code :
  1. class Arc
  2. {
  3. public :
  4.  int curs; // l'arc pointe vers un autre noeud dans le liste
  5.  Arc();
  6.  Arc(int);
  7. };


 
Mais pas mieux...
 
Je connais pas le typedef, comment ca marche ?  :??:  
 
Merci !

n°1264022
++fab
victime du syndrome IH
Posté le 11-12-2005 à 16:45:01  profilanswer
 

Montre un exemple minimal compilable. Sinon, ça parait bon.

n°1264024
gen_gonk
Posté le 11-12-2005 à 16:47:57  profilanswer
 

Voila le fichier .h
 

Code :
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4. using namespace std;
  5. struct Point
  6. {
  7. int x;
  8. int y;
  9. };
  10. class Arc
  11. {
  12. public :
  13.  int curs; // l'arc pointe vers un autre noeud dans le liste
  14.  Arc();
  15.  Arc(int);
  16. };
  17. class Noeud
  18. {
  19.         public :
  20.   vector<Arc> lst_arc; // chaque noeud est relié à d'autres par des arcs
  21.             Point pos; // la position du noeud dans le graphe (utile pour l'image du graphe)
  22.             double aire;
  23.             Noeud();
  24.   Noeud(int,int); 
  25. };
  26. class Graphe
  27. {
  28.         private :
  29.   vector<Noeud> lst_noeud; // un graphe est constitué d'une liste de noeuds
  30.   Point max_coord; // le noeud le plus en bas à droite
  31.   int nb_graphe;
  32.  public :
  33.   Graphe();
  34.   void ajouter_noeud(Noeud);
  35.   int taille();
  36.   Noeud get_noeud(int);
  37. };


 
et voila le .cpp
 

Code :
  1. #include "structures.h"
  2. Arc::Arc()
  3. {
  4. curs = 0;
  5. }
  6. Arc::Arc(int a)
  7. {
  8. curs = a;
  9. }
  10. Noeud::Noeud()
  11. {
  12. lst_arc = new vector<Arc>();
  13. pos.x = 0;
  14. pos.y = 0;
  15. aire = 0.0;
  16. }
  17. Noeud::Noeud(int x,int y)
  18. {
  19. lst_arc = new vector<Arc>();
  20. pos.x = x;
  21. pos.y = y;
  22. aire = 0.0;
  23. }
  24. Graphe::Graphe()
  25. {
  26. max_coord.x = 0;
  27. max_coord.y = 0;
  28. nb_graphe = 0;
  29. }
  30. void Graphe::ajouter_noeud(Noeud n)
  31. {
  32. /* ON TESTE SI LE POINT EST EN DEHORS DES LIMITES */
  33. if(n.pos.x > max_coord.x)
  34.  max_coord.x = n.pos.x;
  35. if(n.pos.y > max_coord.y)
  36.  max_coord.y = n.pos.y;
  37. /* ON AJOUTE LE NOEUD A LA FIN DU VECTEUR */
  38. lst_noeud.push_back(n);
  39. nb_graphe++;
  40. }
  41. int Graphe::taille()
  42. {
  43. return nb_graphe;
  44. }
  45. Noeud Graphe::get_noeud(int i)
  46. {
  47. return lst_noeud[i];
  48. }
  49. int main()
  50. {
  51. Graphe mon_graphe;
  52. Noeud nd1(98,3),nd2,nd3(3,5);                 
  53. mon_graphe.ajouter_noeud(nd1);
  54. mon_graphe.ajouter_noeud(nd2);
  55. mon_graphe.ajouter_noeud(nd3);
  56. /*for(int i=0;i<mon_graphe.taille();i++)
  57. {
  58.  cout << "nd" << i << " : x = " << mon_graphe.get_noeud(i).pos.x << " y = " << mon_graphe.get_noeud(i).pos.y << endl;
  59. }*/
  60. system("PAUSE" );
  61. }


 
Vala...

n°1264025
++fab
victime du syndrome IH
Posté le 11-12-2005 à 16:48:08  profilanswer
 

non compilable plutot :D

n°1264026
++fab
victime du syndrome IH
Posté le 11-12-2005 à 16:54:40  profilanswer
 

dans le .cpp, ligne 15 et ligne 23, y a menu problème ...

n°1264027
gen_gonk
Posté le 11-12-2005 à 16:57:13  profilanswer
 

Ouuups, en fait avant j'utilisais des pointeurs, pas des données fixes... J'ai oublié de changer ces deux lignes...
 
Mais en les supprimant ca ne marche pas mieux... :S

n°1264029
fra0
Posté le 11-12-2005 à 17:02:13  profilanswer
 

c'est dans ton constructeur de Noeud
tu n'as pas besoin d'allouer le vector<Arc>, tu peux éventuellement l'initialiser a une certaine taille ou contenu
 
Noeud::Noeud() : lst_arc(7,Arc(-333))
{
//    lst_arc = new vector<Arc>();
    pos.x = 0;
    pos.y = 0;
    aire = 0.0;
}

n°1264031
++fab
victime du syndrome IH
Posté le 11-12-2005 à 17:05:07  profilanswer
 

je supprime ces  2 lignes, et je n'ai pas d'erreurs à la compilation.
Quelles sont tes erreurs ???
 
et met des include guards dans ton .h :o

mood
Publicité
Posté le 11-12-2005 à 17:05:07  profilanswer
 

n°1264033
gen_gonk
Posté le 11-12-2005 à 17:12:12  profilanswer
 

Ca marche, c'est moi qui suis dyslexique :)
 
Merci pour votre aide !


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

  Type non reconnu

 

Sujets relatifs
[Reflectoin] doublons avec GetMethods pour le type Char[VBA-EXCEL2003] incompatibilité de type erreur 13
[C#] Type d'argument non conforme CLSRecuperer un type generique par intraspection.
Je cherche un exemple d'algo type arbre shvdeux type de requete laquelle est la mieux ?
value pour un input de type fileType de donnée ERREUR énorme!
Le parametre numérique pour les champs de type numeric sert à quoi ?Connaître le type d'un fichier
Plus de sujets relatifs à : Type non reconnu


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