IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

does not name a type


Sujet :

C++

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut does not name a type
    bonjour à tous.

    Je ne comprend pas pourquoi il ne tient pas compte de la définition de la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    #ifndef OBJETS_HPP_
    #define OBJETS_HPP_
     
    class Noeud{
    public:
       virtual ~Noeud();
       virtual void prod()=0;
    };
    class Reste:public Noeud{
    private:
    	SuiteCar *lignen;
    	Reste *resten;
    public:
    	Reste(SuiteCar *x,Reste *y);
    	~Reste();
    	void prod();
    };
     
    class SuiteCar:public Noeud{
    private:
    	char valex;
    	SuiteCar *ligne1n;
    public:
    	SuiteCar(char x,SuiteCar *y);
    	~SuiteCar();
    	void prod();
    };
     
    class Fin:public Noeud{
    private:
       bool finLigne;
    public:
       Fin(bool x);
       void prod();
    };
     
    class Suite:public Noeud{
    private:
       SuiteCar *lignen;
       Reste *resten;
    public:
       Suite(SuiteCar *x,Reste *y);
       ~Suite();
       void prod();
    };
     
    class SuiteLignes:public Noeud{
    private:
       Suite *lignesn;
       Fin *factn;
    public:
       SuiteLignes(Suite *x,Fin *y);
       ~SuiteLignes();
       void prod();
    };
     
     
     
    #endif /* OBJETS_HPP_ */
    g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"objets.d" -MT"objets.d" -o "objets.o" "../objets.cpp"
    In file included from ../objets.cpp:8:0:
    ../objets.hpp:26:4: error: ‘SuiteCar’ does not name a type
    ../objets.hpp:27:4: error: ‘Reste’ does not name a type
    ../objets.hpp:29:19: error: expected ‘)’ before ‘*’ token
    ../objets.hpp:47:2: error: ‘SuiteCar’ does not name a type
    ../objets.hpp:50:17: error: expected ‘)’ before ‘*’ token

    quelqu'un a une idée?

  2. #2
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 044
    Points : 2 241
    Points
    2 241
    Par défaut
    Bonjour,

    Ton compilateur lit ton fichier de haut en bas. Donc Tu dois faire en sorte que ton compilateur découvre la classe ( lise le class MyClass{...} pour qu'il sache ce que c'est lorsqu'il va le voir utiliser dans une autre classe.
    Ou lorsque ce sont des pointeurs, tu peux faire une forward déclaration ( class MyClass; ) juste avant de l'utiliser.
    cf : http://cpp.developpez.com/faq/cpp/?page=Les-classes-en-Cplusplus#Comment-creer-deux-classes-qui-font-reference-l-une-a-l-autre

    Donc tu dois faire la déclaration dans l'ordre suivant:


    class Noeud;
    class Fin;
    class SuiteCar;
    class Reste;
    class Suite;
    class SuiteLignes;

  3. #3
    Membre actif
    Inscrit en
    Mai 2012
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 65
    Points : 282
    Points
    282
    Par défaut
    Dans ta classe Reste, tu as en membre un objet SuiteCar, or tu ne défini la classe SuiteCar qu'après la classe Reste.
    Interverti les deux classes, met SuiteCar avant Reste et ça devrait fonctionner, ou alors crée des fichiers séparés pour chaque Classe.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut
    ok, merci les gars, ça marche.
    résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. error: ‘i1’ does not name a type
    Par JackStrieger dans le forum C++
    Réponses: 3
    Dernier message: 15/01/2014, 15h23
  2. [QtKeychain] 'Q_CORE_EXPORT_INLINE' does not name a type
    Par sliverTwist dans le forum Débuter
    Réponses: 18
    Dernier message: 06/03/2013, 15h45
  3. Colonne’ does not name a type
    Par tamtoum1987 dans le forum C++
    Réponses: 7
    Dernier message: 23/03/2012, 09h19
  4. ‘Arbre’ does not name a type
    Par SAKDOSS dans le forum C++
    Réponses: 12
    Dernier message: 21/04/2009, 14h53
  5. error : does not name a type // je n'y comprends rien
    Par djobanaille dans le forum C++
    Réponses: 6
    Dernier message: 19/11/2005, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo