Objet dans une fonction

Signaler
Messages postés
12
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
2 septembre 2010
-
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
-
Bonjour,
voila j'ai un gros probleme
en fait j'ai un objet declarer dans une fonction le probleme est aue je veus recuperer une fonction de cette objet et il ne veut pas.
je vous passe le code se sera plus simple a comprendre merci

main.cpp
#include <cstdlib>
#include
#include "groupe.h"
#include "personnage.h"

using namespace std;

int main(int argc, char *argv[])
{
    CL_Perso pers;
    //pers.CL_Persos(3,2);
la ici j'essai de recuperer la fonction diviser_pv() mais je n'y arrive pas (l'objet mage est crees dans la fonction CL_Perso plus bas)
    sa ne marche pas ==>pers.CL_Persos(3,2).mage.diviser_pv();
    cout << "perso pt_vie: "<< pers.pt_vie << endl;
    cout << "perso pt_attaque: "<< pers.pt_attaque << endl;
   
    system("pause");   
    return 0;
}

perso.cpp:
void CL_Perso::CL_Persos(int race, int metier)
{

     if (race==1)
     {
         CL_Humain humain;
         pt_attaque=humain.pt_attaque;
         pt_vie=humain.pt_vie;
         }else if(race==2)
         {
              CL_Nain nain;
              pt_attaque=nain.pt_attaque;
              pt_vie=nain.pt_vie;
              }else if (race==3)
              {
                   CL_Elf elf;
                   pt_attaque=elf.pt_attaque;
                   pt_vie=elf.pt_vie;
                   }
     if (metier==1)
     {
         CL_Guerrier guerrier;
         pt_attaque=pt_attaque+2;
         }else if(metier==2)
         {
le probleme est la : j'ai mon objet mage est dans cette objet j'ai la fonction diviser_pv() mais je n'arrive pas a l'utiliser en creant un objet CL_Perso    
        
              CL_Mage mage;
              }else if (metier==3)
              {
                   CL_Pretre pretre;
                   }else if (metier==4)
                   {
                        CL_Invocateur invocateur;
                        }
     };

merci de votre aide

2 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
A ce que je vois CL_Persos ne renvoi pas de reference sur quoi que ce soit !
CL_Persos(3,2).mage(...)

Pour que ça marche il faudrait :

CL_Mage& CL_Perso::CL_Persos(int race, int metier)
{
   CL_Mage* pmage = new CL_Mage;
   ...
   return(*pmage);
}

A ceci près que l'appelant doit se charger de détruire l'objet CL_Mage.
Sinon je ne vois pas comment tu peux faire avec ce genre de construction alambiquée.
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1
Ce que tu fais est tout sauf de la programmation objet !

Fait une classe mère abstraite perso (par exemple) dont hérite chacune de tes races. Tu veras que tu auras dejà bcp moins de problèmes d'implémentation par la suite !