Passage d'un pointer dans une fonction

Résolu
cs_dipin Messages postés 60 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 15 octobre 2009 - 14 oct. 2009 à 23:00
cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 - 15 oct. 2009 à 21:07
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

cs_dipin Messages postés 60 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 15 octobre 2009
15 oct. 2009 à 20:26
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------------>>
3
cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
14 oct. 2009 à 23:34
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;
0
cs_dipin Messages postés 60 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 15 octobre 2009
15 oct. 2009 à 19:07
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------------>>
0
cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
15 oct. 2009 à 21:07
Yes !
0
Rejoignez-nous