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 :

J'ai créé une classe mais elle n'est pas reconnue


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut J'ai créé une classe mais elle n'est pas reconnue
    Salut tout le monde,

    Un petit problème "curieux".

    Je viens de créer une classe nommé CClassification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class CClassification : public CChiens
    {
    public:
    	CClassification();
    	~CClassification();
     
    	const char*		Type() const; 				
    };
    Elle hérite donc de CChiens en public.

    Le compilo me dit :

    'CClassification' : is not a class or namespace name
    pourtant que je fais CClassification:: j'obtiens bien la liste de ces méthodes.

    pour toutes les méthodes que j'ai créés pour cette classe (constructeur, destructeur...)

    Sur la méthode Type() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const char* CClassification::Type() const
    {
    	return null;
    }
    déclaré dans le .h comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const char*		Type() const;
    j'ai :

    error C2270: 'Type' : modifiers not allowed on nonmember functions
    Est-ce que cela vous dis quelque chose ?

    Merci d'avance.

    beegees

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Trois questions:

    • Si CChiens est définie dans un autre fichier d'en-tête, as tu bien inclu le fichier dans lequel la classe est définie
    • Si CChiens et CClassification sont dans le même définies dans le même fichier d'en-tête:
      • la définition de CChiens apparait-elle bien avant celle de CClassification
      • sinon, as tu bien fait une déclaration anticipée de la classe CChien avant la défintion de CClassification
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Salut,

    Trois questions:

    • Si CChiens est définie dans un autre fichier d'en-tête, as tu bien inclu le fichier dans lequel la classe est définie
    • Si CChiens et CClassification sont dans le même définies dans le même fichier d'en-tête:
      • la définition de CChiens apparait-elle bien avant celle de CClassification
      • sinon, as tu bien fait une déclaration anticipée de la classe CChien avant la défintion de CClassification
    Bonjour Koala,

    Merci pour ta réponse.

    Je répondrai "OUI" à toutes tes questions.

    Voici mon code du fichier h en question :

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    #ifndef CHIENS_H
    #define CHIENS_H
     
     
    #include "generique.h"
    #include "chaine.h"
     
    class CChiens;
    class CTabClassifications;
    class CTabOrigines;
    class CTabUtilisations;
    class CClassification;
     
    //la classe CChiens va contenir tout ce qui est identique aux classifications, origines et 
    //utilisation, s'est à dire un nom et un compteur.
     
    class CChiens : public CGenerique
    {
    public:
    	CChiens();
    	CChiens(const CChiens& Source);
    	CChiens(const char* UnNom);
    	~CChiens();
     
    	bool				GereUnicite() const;
    	long				NombreClesDeTri() const;
     
    	CGenerique*			Cloner() const;
    	bool				EstValide() const;
    	int					Comparer(const CGenerique& Autre, long TypeComparaison) const;
     
    	virtual const char*	Type() const; //va juste renvoyer "Voiture" ou "Bus" ou "Camion" en dur
     
    	const char*			Nom() const;
    	short				Nombre() const;
    	virtual void		Afficher() const;
     
    	bool				Nom(const char* UnNom);
    	bool				Nombre(short UnNombre);
     
     
     
    private:
    	CChaine			m_Nom;
    	short			m_Compteur;
    };
     
    class CClassification : public CChiens
    {
    public:
    	CClassification();
    	~CClassification();
     
    	const char*		Type() const; 				
    };
     
    class CTabClassifications : public CTableauGenerique
    {
     
    public:
    	//si une classification existe, elle n'entre pas dans le tableau mais le compteur s'incrémente
    	//autrement il y'a ajout dans le tableau et incréementation du compteur
    	CTabClassifications();
    	CTabClassifications(const CTabClassifications& Source);
    	~CTabClassifications();
     
    	CChiens&			Element(long UnIndice) const;
    	long				Indice(const char* UnNom) const;
     
    	bool				Ajouter(const CChiens& Modele);
    	void				Trier();
     
    	void				Afficher(const char* FiltreSurType=NULL) const;
    	bool				Charger(const char* NomFichier);
     
    private:
    	static bool			FctnTraiterLigne(const CChargeurFichierTexte& Chargeur, void* Contexte);
    	bool				TraiterLigne(const CChargeurFichierTexte& Chargeur);
     
    };
     
     
    class CTabOrigines : public CTableauGenerique
    {
     
    public:
    	CTabOrigines();
    	CTabOrigines(const CTabOrigines& Source);
    	~CTabOrigines();
     
    public:
    	CChiens&			Element(long UnIndice) const;
    	long				Indice(const char* UnNom) const;
     
    	bool				Ajouter(const CChiens& Modele);
    	void				Trier();
     
    	void				Afficher(const char* FiltreSurType=NULL) const;
    	bool				Charger(const char* NomFichier);
     
    private:
    	static bool			FctnTraiterLigne(const CChargeurFichierTexte& Chargeur, void* Contexte);
    	bool				TraiterLigne(const CChargeurFichierTexte& Chargeur);
     
     
    };
     
    class CTabUtilisations : public CTableauGenerique
    {
     
    public:
    	CTabUtilisations();
    	CTabUtilisations(const CTabUtilisations& Source);
    	~CTabUtilisations();
     
    	CChiens&			Element(long UnIndice) const;
    	long				Indice(const char* UnNom) const;
     
    	bool				Ajouter(const CChiens& Modele);
    	void				Trier();
     
    	void				Afficher(const char* FiltreSurType=NULL) const;
    	bool				Charger(const char* NomFichier);
     
    private:
    	static bool			FctnTraiterLigne(const CChargeurFichierTexte& Chargeur, void* Contexte);
    	bool				TraiterLigne(const CChargeurFichierTexte& Chargeur);
     
     
    };
     
     
     
     
     
     
     
     
     
    #endif//CHIENS_H
    Un big merci à toi.

    beegees

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    perso je viens de faire un copier/coller de ton code et ca compile très bien chez moi...

    la différence est que mes fichiers sont CPP et HPP peut être?

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    évidement j'ai repris une classe à moi définie dans le même fichier à la place de CChien histoire de tester

  6. #6
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par loicounet Voir le message
    évidement j'ai repris une classe à moi définie dans le même fichier à la place de CChien histoire de tester
    D'où penses-tu que le problème provient ?

    Merci

    beegees

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    tu pourrais peut etre tenter de commenter tout le code dans tes classes, histoire de voir si l'arbre de l'héritage fonctionne!
    genre:

    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
     
    class CChiens : public CGenerique
    {//
    };
     
    class CClassification : public CChiens
    {//
    };
     
    class CTabClassifications : public CTableauGenerique
    {//
     };
     
     
    class CTabOrigines : public CTableauGenerique
    {//
     
    };
     
    class CTabUtilisations : public CTableauGenerique
    {//
    };

  8. #8
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 294
    Billets dans le blog
    2
    Par défaut
    Etrange effectivement...

    Peux-tu nous donner le message d'erreur complet? (ligne, etc...)
    J'opterais pour une faute de frappe ou une erreur de copier/coper entre le .cpp et le .h

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    c'est clair que ya moyen de se planter entre CClassification et CClassifications!

  10. #10
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par loicounet Voir le message
    perso je viens de faire un copier/coller de ton code et ca compile très bien chez moi...

    la différence est que mes fichiers sont CPP et HPP peut être?
    Salut Loic,

    Merci pour ta réponse et pour avoir pris le temps de compiler mon code.

    Je ne sais pas ce que s'est des .hpp mais chez moi ça ne passe pas

    Merci
    beegees

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

Discussions similaires

  1. [MySQL] Insérer des données dans une table, mais ce n'est pas une table USER
    Par amerex dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/08/2008, 00h01
  2. Réponses: 6
    Dernier message: 27/01/2008, 17h18
  3. Activer automatiquement une référence si elle n'est pas activée?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/10/2007, 17h27
  4. Réponses: 6
    Dernier message: 23/12/2006, 17h36
  5. Réponses: 2
    Dernier message: 05/09/2006, 10h08

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