Portée globale typedef compilation separée

Résolu
tbpacker Messages postés 10 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 17 juin 2009 - 18 janv. 2008 à 10:08
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 18 janv. 2008 à 19:45
Bonjour a tous,

mon probleme est le suivant:
Ou placer un typedef vector VEC dans un code objet comprenant:
-main.cpp
-matrice.cpp
-matrice.h

sachant que les 3 fichiers font appel a cette "surdeclaration" de type?

-le compilo me renvoie une erreur sur les membres public de la classe meme si je place cette declaration avant la declaration de classe.(cela marchait qd tt était regroupé ds le main)

main.cpp:

#include<vector>
#include "matrice.h"
using namespace std;

int main()
{
                     blabalabla qui utilise VEC et la classe matrice;
                     return 0;
}

matrice.cpp:

#include "matrice.h"

matrice::matrice (void)                         //constructeur par defaut
{      
                      VEC blabla;
}

autres constructeurs et definitions de fonctions membres faisant appel à VEC

matrice.h:

#ifndef MATRICE_H
#define MATRICE_H

typedef vector VEC;     //g sans doute pas le droit de le declarer ici?

class matrice
{
           private:
                    blabla
           public:
                      VEC V;
                      VEC fonction(void);
                       matrice(void);      //construct
};

#endif
  

et la......ERREUR!!!!

si quelqun pouvait m'aider?merci d'avance;

3 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
18 janv. 2008 à 13:20
Faut que t'inclues vector.h dans matrice.h juste avant de faire ton typedef, entête de fichier
(du coup plus besoin d'inclure vector.h dans les autres fichiers).
3
tbpacker Messages postés 10 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 17 juin 2009
18 janv. 2008 à 13:42
Merci bcp!
Il fallait placer le vector.h ou tu m'avais dit mais aussi redeclarer un espace de nom standard.Apparament lors d'une compilation séparée chaque fichier un espace de nom propre.

ciao

  
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
18 janv. 2008 à 19:45
En fait considère que les fichiers .c ou .cpp sont indépendants niveau déclarations; les .h c'est juste du texte inséré à l'endroit où tu mets ton #include.
0
Rejoignez-nous