Passage d'un pointer dans une fonction [Résolu]

Signaler
Messages postés
60
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2009
-
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
-
Bonsoir a tous !


alors voila mon code :

le niveau.hpp

#ifndef NIVEAU_HPP
#define NIVEAU_HPP

#include "Chien.hpp"
#include "Fermier.hpp"
#include "Oiseaux.hpp"

class Niveau 
{
    public :
         /* constructeur de Position*/
         Niveau();
         /* destructeur du Position*/
         ~Niveau();
         
         void chargePerso(Chien *chien, Fermier *fermier, Oiseaux *oiseau1);
         //accesseur
         
         
    private :
          
};
#endif


le niveau.cpp

#include "Niveau.hpp"

#include "Chien.hpp"
#include "Fermier.hpp"
#include "Oiseaux.hpp"

#include 

Niveau::Niveau()
{

}

Niveau::~Niveau()
{
        
}


void Niveau::chargePerso(Chien *chien, Fermier *fermier, Oiseaux *oiseau1)
{
                     
}


le fichier main :

#include <cstdlib>
#include 

#include "Perso.hpp"

#include "Chien.hpp"
#include "Fermier.hpp"
#include "Oiseaux.hpp"


#include "Niveau.hpp"

using namespace std;

int main()
{

    //creation dynamique de l'objet donc suppression a faire
    Niveau *niveauDyn = new Niveau;
    Chien *chienDyn = new Chien;
    Fermier *fermierDyn = new Fermier;
    Oiseaux *oiseauxDyn = new Oiseaux;

    niveauDyn.chargePerso(&chienDyn,&fermierDyn,&oiseauxDyn);
    
    
    
    delete niveauDyn;
    delete chienDyn;
    delete chienDyn;
    delete oiseauxDyn;
    
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}


en rouge c'est ou est le probleme mais je ne comprends pas pourquoi !

voici l'erreur :
- main.cpp In function `int main()':
-31 main.cpp `chargePerso' has not been declared
-31 main.cpp request for member of non-aggregate type before '(' token

voila merci pour votre aide.
surement une erreur de débutant


<<------------QuE lA FETE CoMmEnCe------------>>

4 réponses

Messages postés
60
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2009

j'ai trouvé
alors
la fonction doit être appelée comme cela :
niveauDyn->chargePerso(chienDyn,fermierDyn,oiseauxDyn);

si j'ai tout compris c'est parce que c'est un pointer niveauDyn donc les appel de fonction se font avec la flèche ! J'ai bien compris ?

<<------------QuE lA FETE CoMmEnCe------------>>
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
Salut,

1) "&chienDyn" est un pointeur de pointeur ! Tu dois écrire :
niveauDyn.chargePerso( chienDyn, fermierDyn, oiseauxDyn); 


2) Dans Niveau.hpp, tu devrais supprimer les includes suivants :

#include "Chien.hpp"
#include "Fermier.hpp"
#include "Oiseaux.hpp"

et mettre à la place les pré-déclarations :
class Chien;
class Fermier;
class Oiseaux;
Messages postés
60
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2009

merci pour ta réponse mais j'ai fait ce que tu m'as dis et cela marche pas j'ai toujours les même erreurs !

fichier main.cpp
#include <cstdlib>
#include 

#include "Perso.hpp"

#include "Chien.hpp"
#include "Fermier.hpp"
#include "Oiseaux.hpp"


#include "Niveau.hpp"

using namespace std;

int main()
{

    
    //creation dynamique de l'objet donc suppression a faire
    Niveau *niveauDyn = new Niveau;
    Chien *chienDyn = new Chien;
    Fermier *fermierDyn = new Fermier;
    Oiseaux *oiseauxDyn = new Oiseaux;

    niveauDyn.chargePerso(chienDyn,fermierDyn,oiseauxDyn);
    
    
    
    delete niveauDyn;
    delete chienDyn;
    delete chienDyn;
    delete oiseauxDyn;
    
    

    //-------------------------------
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}



niveau.hpp
#ifndef NIVEAU_HPP
#define NIVEAU_HPP

class Chien;
class Fermier;
class Oiseaux; 

class Niveau 
{
    public :
         /* constructeur de Position*/
         Niveau();
         /* destructeur du Position*/
         ~Niveau();
         
         void chargePerso(Chien *chien, Fermier *fermier, Oiseaux *oiseau1);
         //accesseur
         
         
    private :
          
};
#endif


voila les modif que j'ai fait si j'ai bien compris...
merci encore pour ta réponse

<<------------QuE lA FETE CoMmEnCe------------>>
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
Yes !