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

  FORUM HardWare.fr
  Programmation
  C++

  ' ' does not name a type

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

' ' does not name a type

n°2076064
Goku46
Posté le 15-05-2011 à 23:40:35  profilanswer
 


Bonjours tout le monde.
Ne trouvant rien sur internet correspondant a mon problème je vous écrit.
Je suis nouveau dans le concepte de créé plusieur hiders et cpp.
 
Voila mon problème :
J'ai créé un projet qui contient deux hiders et deux cpp.
Dans le 1er hiders j'ai mis ma class A;
Dans le deuxième hiders j'ai inclue mon 1er hiders.
Puis j'inclue le deuxième hiders dans mes deux cpp.
Un de mes cpp utilise la class A. Mais lorsque je compile il afiche l'erreur 'A' does not name a type.
 
Pouvez vous m'aider svp??Par avance merci.

mood
Publicité
Posté le 15-05-2011 à 23:40:35  profilanswer
 

n°2076080
shaoyin
Posté le 16-05-2011 à 09:12:04  profilanswer
 

Bonjour,
 
Alors déjà "hider", c'est dans les films d'horreur. En informatique, on parle plutôt de "header" !
 
Tes headers sont dans le même répertoire que les autres fichiers ? Ton "include path" est correct ?

n°2076111
gilou
Modérateur
Modzilla
Posté le 16-05-2011 à 10:30:22  profilanswer
 

Et puis c'est sur que si tu donnes pas le code de la ligne incriminée, on est bien parti...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2076222
Goku46
Posté le 16-05-2011 à 13:04:51  profilanswer
 

Désolé pour l'orthographe. C'est loin d'être mon fort.
Je voulais pas mettre mon code non plus car sa prend bcp de place.
 
J'utilise Qt et vous verrez la fonction exercice de ma fenetre me sert essentiellement de test. Elles se contentes d'appeller une autre fonction("GaussSansPivot" ).  
 
Voici le cpp ou sa plante
 

Code :
  1. #include <iostream>
  2. #include "Graphique.h"
  3. using namespace std;
  4. vector GaussSansPivot (matrice A,vector b)
  5. {
  6.     matrice L(A.dimension()),U(A.dimension());
  7.     vector x(A.dimension());
  8.     float somme;
  9.     int i,k,j;
  10.     U=A;
  11.     x=b;
  12.     L.unite();
  13.     for(k=0;k<A.dimension()-1;k++)
  14.     {
  15.         for(i=k+1;i<A.dimension();i++)
  16.         {
  17.             L[i][k]=U[i][k]/U[k][k];
  18.             for(j=k;j<A.dimension();j++)
  19.             {
  20.                 U[i][j]=U[i][j]-L[i][k]*U[k][j];
  21.             }
  22.             x[i]=x[i]-L[i][k]*x[k];
  23.         }
  24.     }
  25.     L.aff();
  26.     U.aff();
  27.     x[A.dimension()-1]=x[A.dimension()-1]/U[A.dimension()-1][A.dimension()-1];
  28.     for(i=A.dimension()-2;i>=0;i--)
  29.     {
  30.         somme= 0;
  31.         for(k=i+1;k<A.dimension();k++)
  32.         {
  33.             somme=somme + U[i][k]*x[k];
  34.         }
  35.         x[i]=(x[i]-somme)/U[i][i];
  36.     }
  37.     return x;
  38. }
  39. vector GaussAvecPivot (matrice A,vector b)
  40. {
  41.     matrice L(A.dimension()),U(A.dimension()),P(A.dimension());
  42.     vector x(A.dimension());
  43.     float somme,max;
  44.     int i,k,j,pos;
  45.     U=A;
  46.     x=b;
  47.     P.unite();
  48.     for(k=0;k<A.dimension()-1;k++)
  49.     {
  50.         max=U[k][k];
  51.         pos=k;
  52.         for(i=k+1;i<A.dimension();i++)
  53.         {
  54.             if(U[i][k]>max)
  55.             {
  56.                 max=U[i][k];
  57.                 pos=i;
  58.             }
  59.         }
  60.         L.echangeLigne(k,pos);
  61.         U.echangeLigne(k,pos);
  62.         P.echangeLigne(k,pos);
  63.         x.echangeLigne(k,pos);
  64.         for(i=k+1;i<A.dimension();i++)
  65.         {
  66.             L[i][k]=U[i][k]/U[k][k];
  67.             for(j=k;j<A.dimension();j++)
  68.             {
  69.                 U[i][j]=U[i][j]-L[i][k]*U[k][j];
  70.             }
  71.             x[i]=x[i]-L[i][k]*x[k];
  72.         }
  73.     }
  74.     x[A.dimension()-1]=x[A.dimension()-1]/U[A.dimension()-1][A.dimension()-1];
  75.     for(i=A.dimension()-2;i>=0;i--)
  76.     {
  77.         somme= 0;
  78.         for(k=i+1;k<A.dimension();k++)
  79.         {
  80.             somme=somme + U[i][k]*x[k];
  81.         }
  82.         x[i]=(x[i]-somme)/U[i][i];
  83.     }
  84.     L.unite();
  85.     L.aff();
  86.     U.aff();
  87.     P.aff();
  88.     return x;
  89. }
  90. vector GaussSeidel (matrice A, vector b, vector X0, float tol,int max)
  91. {
  92.     vector x,diff;
  93.     int nbIt=0,i,j;
  94.     float rest=0,resOld,resNew;
  95.     x.changeTaille(A.dimension());
  96.     diff.changeTaille(A.dimension());
  97.     x=X0;
  98.     diff=b-MV(A,x);
  99.     rest=(diff.normeC())/(b.normeC());
  100.     while( nbIt<max && rest>tol*tol)
  101.     {
  102.         for(i=0;i<A.dimension();i++)
  103.         {
  104.             resNew=0;
  105.             resOld=0;
  106.             for(j=i+1;j<A.dimension();j++)
  107.             {
  108.                 resOld=resOld+A[i][j]*x[j];
  109.             }
  110.             for(j=0;j<=i-1;j++)
  111.             {
  112.                 resNew=resNew+A[i][j]*x[j];
  113.             }
  114.             x[i]=(1/A[i][i])*(b[i]-resOld-resNew);
  115.         }
  116.         diff=b-MV(A,x);
  117.         rest=diff.normeC()/b.normeC();
  118.         nbIt++;
  119.     }
  120.     return x;
  121. }
  122. vector gradient(matrice A, vector b, vector X0, float tol, int max )
  123. {
  124.     vector x,diff,Ad,d,tempo2,dInit;
  125.     int nbIt=0,i,j;
  126.     float rest=0,denominateur,numerateur,alpha,beta;
  127.     x=X0;
  128.     diff=b-MV(A,x);
  129.     d=diff;
  130.     rest=(diff.normeC())/(b.normeC());
  131.     while( nbIt<max && rest>tol*tol)
  132.     {
  133.         denominateur=0;
  134.         numerateur=0;
  135.         nbIt++;
  136.         Ad=MV(A,d);
  137.         for(i=0;i<A.dimension();i++)
  138.         {
  139.             denominateur=denominateur+  d[i]*Ad[i];
  140.             numerateur=numerateur+ diff[i]*d[i];
  141.         }
  142.         alpha=numerateur/denominateur;
  143.         x=x+diff*alpha;
  144.         diff=b-MV(A,x);
  145.         rest=(diff.normeC())/(b.normeC());
  146.         Ad=MV(A,d);
  147.         tempo2=MV(A,diff);
  148.         denominateur=0;
  149.         numerateur=0;
  150.         for(i=0;i<A.dimension();i++)
  151.         {
  152.             denominateur=denominateur+ Ad[i]*d[i];
  153.             numerateur=numerateur+ d[i]*tempo2[i];
  154.         }
  155.         beta=numerateur/denominateur;
  156.         d=diff-beta*d;
  157.     }
  158.     return x;
  159. }


Le programme me met la même erreur pour chaque début de fonction tel que "vector gradient(matrice A, vector b, vector X0, float tol, int max )"
La class vector étant définit dans le premier headers avec ma classe matrice  
Voici sont code
 

Code :
  1. #ifndef PROJETCLANU
  2. #define PROJETCLANU
  3. #include <iostream.h>
  4. class matrice;
  5. //definition des vecteurs
  6. class vector
  7. {
  8.     private :
  9.     float *V;
  10.     int taille;
  11.     public :
  12.     //constructeur et destructeur
  13.     vector(int T=1);
  14.     vector(const vector & vec);
  15.     ~vector();
  16.     //surdefinition d'operateur
  17.     float & operator[](int i);
  18.     vector operator=(const vector & vec);
  19.     //fonction
  20.     void aff(void);
  21.     void changeTaille(int taille);
  22.     void echangeLigne(int N1,int N2);
  23.     float normeC(void);
  24.     //fonction amie
  25.     friend vector MV(matrice matr,vector vec);
  26.     friend vector operator+(vector a,vector b);
  27.     friend vector operator-(vector a,vector b);
  28.     friend vector operator*(vector a,float alpha);
  29.     friend vector operator*(float alpha, vector a);
  30. };
  31. vector::vector(int T)
  32. {
  33.     int i;
  34.     V = new float [T];
  35.     taille=T;
  36.     for(i=0;i<taille;i++)
  37.     {
  38.         *(V+i)=0;
  39.     }
  40. }
  41. vector::vector(const vector & vec)
  42. {
  43.     int i;//compteur
  44.     taille=vec.taille;
  45.     V = new float[taille];
  46.     for(i=0;i<taille;i++)
  47.     {
  48.         V[i]=vec.V[i];
  49.     }
  50. }
  51. vector::~vector()
  52. {
  53.     delete V;
  54. }
  55. float & vector::operator[](int i)
  56. {
  57.     return *(V+i);
  58. }
  59. vector vector::operator=(const vector & vec)
  60. {
  61.     int i;
  62.     if(this != &vec)
  63.     {
  64.         delete V;
  65.         taille=vec.taille;
  66.         V=new float[taille];
  67.         for(i=0;i<taille;i++)
  68.         {
  69.             V[i]=vec.V[i];
  70.         }
  71.     }
  72.     return *this;
  73. }
  74. void vector::aff(void)
  75. {
  76.     int i;
  77.     for(i=0;i<taille;i++)
  78.     {
  79.         cout<<*(V+i)<<endl;
  80.     }
  81.     cout<<endl;
  82. }
  83. void vector::changeTaille(int n)
  84. {
  85.     delete V;
  86.     V=new float[n];
  87.     taille=n;
  88. }
  89. void vector::echangeLigne(int N1,int N2)
  90. {
  91.     float tempo;
  92.     tempo=V[N1];
  93.     V[N1]=V[N2];
  94.     V[N2]=tempo;
  95. }
  96. float vector::normeC(void)
  97. {
  98.     int i;
  99.     float resul=0;
  100.     for(i=0;i<taille;i++)
  101.     {
  102.         resul=resul+V[i]*V[i];
  103.     }
  104.     return resul;
  105. }
  106. //definition des matrices
  107. class matrice
  108. {
  109.     private :
  110.     float **M; //notre pointeur pour aller cherché les élément de la matrice
  111.     int taille;
  112.     public :
  113.     matrice(int T=1); //on reçois en argument la taille de la matrice CARRE
  114.     matrice(const matrice &matr);//constructeur de recopie
  115.     ~matrice();//destructeur
  116.     float * operator[](int i);//surdefinition de l'operateur[]
  117.     matrice operator=(const matrice & matr);//surdefinition de l'operateur =
  118.     void aff(void);//fonction afficher
  119.     void echangeLigne(int N1,int N2);//échanger la ligne N1 avec la ligne N2
  120.     void changeTaille(int n);
  121.     void unite(void);
  122.     void Hilbert(void);
  123.     int dimension(void);
  124.     friend vector MV(matrice matr,vector vec);//fonction multipliant un vecteur et une matrice
  125. };
  126. matrice::matrice(int T)
  127. {
  128.     int i,j;//compteur
  129.     M = new float*[T];//on crée un tableau de pointeur
  130.     for(i=0;i<T;i++)
  131.     {
  132.         M[i]=new float[T];
  133.     }
  134.     taille=T;
  135.     for(i=0;i<taille;i++)
  136.     {
  137.         for(j=0;j<taille;j++)
  138.         {
  139.             M[i][j]=0;
  140.         }
  141.     }
  142. }
  143. matrice::matrice(const matrice &matr)
  144. {
  145.     int i,j;//compteur
  146.     taille=matr.taille;
  147.     M = new float*[taille];
  148.     for(i=0;i<taille;i++)
  149.     {
  150.         M[i]=new float[taille];
  151.     }
  152.     for(i=0;i<taille;i++)
  153.     {
  154.         for(j=0;j<taille;j++)
  155.         {
  156.             M[i][j]=matr.M[i][j];
  157.         }
  158.     }
  159. }
  160. matrice::~matrice()
  161. {
  162.     int i;
  163.     for(i=0;i<taille;i++)
  164.     {
  165.         delete M[i];
  166.     }
  167.     delete M;
  168. }
  169. float * matrice::operator[](int i)
  170. {
  171.     return *(M+i);
  172. }
  173. matrice matrice::operator=(const matrice & matr)
  174. {
  175.     int i;
  176.     int j;
  177.     if(this != &matr)
  178.     {
  179.         for(i=0;i<taille;i++)
  180.         {
  181.             delete M[i];
  182.         }
  183.         delete M;
  184.         taille=matr.taille;
  185.         M = new float*[taille];
  186.         for(i=0;i<taille;i++)
  187.         {
  188.             M[i]=new float[taille];
  189.         }
  190.         for(i=0;i<taille;i++)
  191.         {
  192.             for(j=0;j<taille;j++)
  193.             {
  194.                 M[i][j]=matr.M[i][j];
  195.             }
  196.         }
  197.     }
  198.     return *this;
  199. }
  200. void matrice::aff(void)
  201. {
  202.     int i;
  203.     int j;
  204.     for(i=0;i<taille;i++)
  205.     {
  206.         for(j=0;j<taille;j++)
  207.         {
  208.             cout<<M[i][j]<<"  ";
  209.         }
  210.         cout<<endl;
  211.     }
  212.     cout<<endl;
  213. }
  214. void matrice::echangeLigne(int N1,int N2)
  215. {
  216.     int i;
  217.     float tempo;
  218.     for(i=0;i<taille;i++)
  219.     {
  220.         tempo=M[N1][i];
  221.         M[N1][i]=M[N2][i];
  222.         M[N2][i]=tempo;
  223.     }
  224. }
  225. void matrice::changeTaille(int n)
  226. {
  227.     int i;
  228.     for(i=0;i<taille;i++)
  229.     {
  230.         delete M[i];
  231.     }
  232.     delete M;
  233.     M=new float*[n];
  234.     for(i=0;i<n;i++)
  235.     {
  236.         M[i]=new float[n];
  237.     }
  238.     taille=n;
  239. }
  240. void matrice::unite(void)
  241. {
  242.     int i;
  243.     for(i=0;i<taille;i++)
  244.     {
  245.         M[i][i]=1;
  246.     }
  247. }
  248. void matrice::Hilbert(void)
  249. {
  250.     int i,j;
  251.     for(i=0;i<taille;i++)
  252.     {
  253.         for(j=0;j<taille;j++)
  254.         {
  255.             M[i][j]=1.0/(i+j+1);//i et j commence à 0,1.0 pour forcer le résultat en float.
  256.         }
  257.     }
  258. }
  259. int matrice::dimension(void)
  260. {
  261.     return taille;
  262. }
  263. //declaration des fonction amis
  264. vector MV(matrice matr,vector vec)
  265. {
  266.     int i=0,j=0;
  267.     vector resul(vec.taille);
  268.     if(matr.taille == vec.taille)
  269.     {
  270.         for(i=0;i<vec.taille;i++)
  271.         {
  272.             for(j=0;j<vec.taille;j++)
  273.             {
  274.                 resul[i]=resul[i]+matr[i][j]*vec[j];
  275.             }
  276.         }
  277.     }
  278.     return resul;
  279. }
  280. vector operator+(vector a,vector b)
  281. {
  282.     vector resul(1);
  283.     if(a.taille==b.taille)
  284.     {
  285.         int i;
  286.         resul.changeTaille(a.taille);
  287.         for(i=0;i<a.taille;i++)
  288.         {
  289.             resul[i]=a.V[i]+b.V[i];
  290.         }
  291.     }
  292.     return resul;
  293. }
  294. vector operator-(vector a,vector b)
  295. {
  296.     vector resul(1);
  297.     if(a.taille==b.taille)
  298.     {
  299.         int i;
  300.         resul.changeTaille(a.taille);
  301.         for(i=0;i<a.taille;i++)
  302.         {
  303.             resul[i]=a.V[i]-b.V[i];
  304.         }
  305.     }
  306.     return resul;
  307. }
  308. vector operator*(vector a,float alpha)
  309. {
  310.     int i;
  311.     vector resul(2);
  312.     for(i=0;i<a.taille;i++)
  313.     {
  314.         resul[i]=a[i]*alpha;
  315.     }
  316.     return resul;
  317. }
  318. vector operator*(float alpha, vector a)
  319. {
  320.     int i;
  321.     vector resul(2);
  322.     for(i=0;i<a.taille;i++)
  323.     {
  324.         resul[i]=a[i]*alpha;
  325.     }
  326.     return resul;
  327. }
  328. //fonction de clanuProject
  329. vector GaussSansPivot (matrice A,vector b);
  330. vector GaussAvecPivot (matrice A,vector b);
  331. vector GaussSeidel (matrice A, vector b, vector X0, float tol,int max );
  332. vector gradient (matrice A, vector b, vector X0, float tol, int max );
  333. #endif


 
et pour finir voici le deuxième headers
 

Code :
  1. #define GRAPHIQUE
  2. #include<iostream.h>
  3. #include <QApplication>
  4. #include <QFont>
  5. #include <QPushButton>
  6. #include "projetClanu.h"
  7. class Fenetre : public QWidget
  8. {
  9.     Q_OBJECT
  10.     private:
  11.     QPushButton *Bouton;
  12.     int nbBouton;
  13.     public:
  14.     Fenetre(int longueur=600,int largeur=600);
  15.     void rajouterBouton(int x,int y,char * nom,int taillePolice=12, char* nompolice="Viner Hand ITC" );
  16.     public slots:
  17.     void exercice(void);
  18. };
  19. Fenetre::Fenetre(int longueur,int largeur)
  20. {
  21.     setFixedSize(longueur,largeur);
  22. }
  23. void Fenetre::rajouterBouton(int x,int y,char * nom,int taillePolice, char* nompolice)
  24. {
  25.     Bouton = new QPushButton(nom,this);
  26.     Bouton->setFont(QFont(nompolice,taillePolice));
  27.     Bouton->setCursor(Qt::PointingHandCursor);
  28.     Bouton->move(x,y);
  29.     QObject::connect(Bouton,SIGNAL(clicked()),this,SLOT(exercice()));
  30. }
  31. void Fenetre::exercice(void)
  32. {
  33.     int i;
  34.     matrice a(3),hil(20);
  35.     vector v(20),resul(20),X0(2);
  36.     hil.Hilbert();
  37.     hil.aff();
  38.     a[0][0]=1;
  39.     a[0][1]=4;
  40.     a[0][2]=7;
  41.     a[1][0]=2;
  42.     a[1][1]=5;
  43.     a[1][2]=8;
  44.     a[2][0]=3;
  45.     a[2][1]=6;
  46.     a[2][2]=11;
  47.     X0[0]=2;
  48.     X0[1]=-1.5;
  49.     for(i=0;i<20;i++)
  50.     {
  51.         v[i]=1;
  52.     }
  53.     v=MV(hil,v);
  54.     resul=GaussSansPivot(hil,v);
  55.     resul.aff();
  56. }
  57. #endif


 
N'étant pas un pro en info, si vous avez des reproche à faire à mon code n'hésiter pas à me les dires, je suis la pour apprendre.
 
Toute les fonction dans mon cpp ont été testé avant que j'éclate mon fichier en petit morceau pour le rendre plus lisible. Elles ne sont donc pas source d'erreur.


Message édité par gilou le 16-05-2011 à 13:53:36
n°2076227
shaoyin
Posté le 16-05-2011 à 13:18:11  profilanswer
 

Pense à utiliser la balise [code] quand tu insère du code dans un post.
 
Ton "using namespace std" est mal placé : il devrait être juste après ton "#include <iostream>"
 
Je pense que le souci vient de là, car du coup, c'est le contenu du fichier "Graphisme.h" qui est censé appartenir à l'espace de nom "std".

n°2076238
Goku46
Posté le 16-05-2011 à 13:32:01  profilanswer
 


Il y a maintenant une nouvelle erreur dans le headers qui contient ma class vector (le 1er)
 
" 'vector' has not been declared"

n°2076239
Goku46
Posté le 16-05-2011 à 13:33:31  profilanswer
 

Cette erreur apparait dès le constructeur

n°2076241
shaoyin
Posté le 16-05-2011 à 13:37:04  profilanswer
 

"vector" et "matrice" sont définis dans "Graphisme.h" ? Parce que si ce n'est pas le cas, il faut inclure le header qui va bien...

n°2076471
Goku46
Posté le 17-05-2011 à 00:19:13  profilanswer
 

j'ai inclue le headers les contenants dans "graphisme.h" donc normalement c'est bon.

n°2076514
shaoyin
Posté le 17-05-2011 à 10:16:22  profilanswer
 

En tout cas, il n'a pas l'air de connaitre l'objet "vector". Peux-tu poster le code de Graphisme.h (juste la zone où tu inclus le header) ?


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

  ' ' does not name a type

 

Sujets relatifs
CREATION Macro CATIA sous UNIX type .CATVBAcomment charger des objets de sécu : certif, clefs, type de chiffremen
Quel type de logiciel tiers pourrait-il se connecter à une BDD?Tableau deux dimensions de type différent
Performances champ de type tableau[PHP] quelle librairie pour faire des graphes type candlestick?
ViewState de type tableauVIsual Studio C# 2008 - option Type de la plateforme cible
XSLT somme par type de produit[VBS] Probleme utilisation Type
Plus de sujets relatifs à : ' ' does not name a type


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