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 :

liste chaine: probleme de declaration d'un objet


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Points : 64
    Points
    64
    Par défaut liste chaine: probleme de declaration d'un objet
    salut

    voila je suis en train de faire une liste chainee ....
    donc en prive je declare un pointeur d'objet de type:classe mere

    quand je veus creer mon insertion au debut ils me dise que mon pointeur d'objet n'est pas declarer???

    voici le code et les erreur:

    code de ma declaration de ma liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class liste_chocolat
    {
    private:
    	chocolat *premier;
    	void insertion_debut(chocolat *ptinsert);
    	void insertion_milieu(chocolat *ptinsert);
    public:
    	liste_chocolat();
    	void insertion(chocolat *ptinsert);
    };
    utilisation pour linsertion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void insertion_debut(chocolat *ptinsert)
    {
    	ptinsert->setsuivant(premier);
    	premier=ptinsert;
    }
    et voici lerreur:
    error C2065: 'premier' : undeclared identifier

    error C2440: '=' : cannot convert from 'class chocolat *' to 'int'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    la 2emem doit s'en doute decouler de la premiere


    merci par avance
    ++

  2. #2
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Il faut que tu inclues le fichier qui contient la définition de l'objet "chocolat"

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Salut!

    Il me semble, que tu n'as pas initialisé ton pointeur "premier"!
    Il faut faire un new!

    Cathar_Rhythm ->

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Points : 64
    Points
    64
    Par défaut
    oui je me suis rendu compte aussi
    je fait premier new chocolat;
    et je l'instancie avec les attibuts de chocolat, jairai acces aux methode privé de chocolat?

  5. #5
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Il faut que tu inclues le fichier qui contient la définition de l'objet "chocolat"
    Pas forcément. Si tu as juste besoin de définir un pointeur sur la classe (dans l'entête notamment), une déclaration anticipée suffira :
    Dès que tu as besoin d'accéder à l'implémentation de la classe chocolat (dans le .cpp typiquement), il est alors nécessaire d'inclure l'entête qui contient la définition de cette classe chocolat.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Points : 64
    Points
    64
    Par défaut
    salut je comprend pas le
    class chocolat
    est ce ke je doi declare classe liste chocolat: public chocolat.....?

    moi jai creer un accesseur qui fais ceci
    liste_chocolat::liste_chocolat()
    {
    premier=new chocolat;
    premier->setsuivant(NULL);
    premier->saisie();
    }
    selement j'ai tjs les meme erreurs et comme je suis pas trop fort en objet je comprend pas pourquoi ceci marche pas

  7. #7
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Citation Envoyé par BertrandA
    Il faut que tu inclues le fichier qui contient la définition de l'objet "chocolat"
    Pas forcément. Si tu as juste besoin de définir un pointeur sur la classe (dans l'entête notamment), une déclaration anticipée suffira :
    Je suis d'accord avec toi, mais dans son cas

    liste_chocolat::liste_chocolat()
    {
    premier=new chocolat;
    premier->setsuivant(NULL);
    premier->saisie();
    }
    Il faut

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Points : 64
    Points
    64
    Par défaut
    [quote="Ti-R"][quote="BertrandA"]
    Il faut que tu inclues le fichier qui contient la définition de l'objet "chocolat"
    salut
    je comprend pas ce ke tu entend par inclure la definition du fichier qui contient chocolat?


    en fait dans chocolat j'ai une procedure de saisie en publique qui me permet d'instantier mon objet si c'est sa que tu veus dire?

  9. #9
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    'premier' : undeclared identifier
    Signifie que ton objet "chocolat" n'a pas été reconnu par le compilateur, donc il faut lui informer de son existence. Donc il faut coller la classe chocolat juste au dessus ou inclure le fichier qui a déclaré la classe chocolat

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Ti-R
    'premier' : undeclared identifier
    Signifie que ton objet "chocolat" n'a pas été reconnu par le compilateur, donc il faut lui informer de son existence. Donc il faut coller la classe chocolat juste au dessus ou inclure le fichier qui a déclaré la classe chocolat
    binla jai ma classe chocolat que voici:
    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
     
    class chocolat
    {
    private:
    	char nom;
    	float poid;
    	int quantite_cacao;
    	virtual double prix_vente();
    	chocolat *suivant;
    protected:
    	float prix_init;
    public:
    	//chocolat(char Pnom, float Ppoid, float Pprix_init, int Pquantite_cacao);
    	chocolat();
    	~chocolat();
    	void affichage();
    	void saisie();
    	void setsuivant(chocolat *Psuivant);
    	chocolat *getsuivant();
    	float get_poid();
    };
    apres je declare les procedure et fonctions, apres je creer une classe fille.. apres je creer ma classe listee_chocolat que voici avec le constructeur et la procedure d'insertion au debut:
    .
    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
     
    class liste_chocolat
    {
    private:
    	chocolat *premier;
    	void insertion_debut(chocolat *ptinsert);
    	void insertion_milieu(chocolat *ptinsert);
    public:
    	liste_chocolat();
    	void insertion(chocolat *ptinsert);
    };
    //-------fin classe liste chocolat-----------------//
     
    //-------creation du constructeur---------//
    liste_chocolat::liste_chocolat()
    {
        premier=new chocolat();
    	premier->saisie();
    	premier->setsuivant(NULL);
     
    }
     
    //-----insertion au debut-------------------------//
    void insertion_debut(chocolat *ptinsert)
    {
     
    	ptinsert->setsuivant(premier);
    	premier=ptinsert;
    }
    tu veu dire que dans ma classe liste_chocolat je doie redefinir les attribue de ma classe chocolat? je ne peus pas acceder a la methode publique Saisie() qui est dans chocolat?
    ayant declarer premier comme pointeur de chocolat je ne peus pas faire
    premier =new chocolat
    premier->saisie()
    ??
    je te demande car je capte pas trop et je veus pas faire du "copier / coller" car sur le net ya plein de truc mais souvent il rentre les parametres en statique du style
    constructeur chocolat(int Ppoid....)
    poid=PPoid
    ...

    apres premier=new chocolat(14...)

    au lieu de faire cela je voudrai utiliser ma procedure de saisie moi
    merci par avance

  11. #11
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    tu veu dire que dans ma classe liste_chocolat je doie redefinir les attribue de ma classe chocolat?
    non

    je ne peus pas acceder a la methode publique Saisie() qui est dans chocolat?
    si

    Je viens de trouver ton erreur pour -> error C2065: 'premier' : undeclared identifier

    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void insertion_debut(chocolat *ptinsert)
    il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void liste_chocolat::insertion_debut(chocolat *ptinsert)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Ti-R
    tu veu dire que dans ma classe liste_chocolat je doie redefinir les attribue de ma classe chocolat?
    non

    je ne peus pas acceder a la methode publique Saisie() qui est dans chocolat?
    si

    Je viens de trouver ton erreur pour -> error C2065: 'premier' : undeclared identifier

    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void insertion_debut(chocolat *ptinsert)
    il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void liste_chocolat::insertion_debut(chocolat *ptinsert)
    oo fan en plus c gros comme chez pas quoi sa
    bon je suis desoler de l'erreur comise la

    veuillez m'en excuser

    et merci encore TI-R

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

Discussions similaires

  1. Listes Chainées probleme d'affichage
    Par reapa dans le forum C
    Réponses: 2
    Dernier message: 11/07/2008, 02h38
  2. Probleme arbre/liste chainée en template
    Par Raton dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2005, 16h09
  3. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  4. Mal a la tete avec liste chainée d'objet
    Par Raton dans le forum C++
    Réponses: 23
    Dernier message: 03/08/2005, 22h13
  5. Réponses: 2
    Dernier message: 25/05/2005, 17h25

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