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 :

Probleme de retour d'objet


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut Probleme de retour d'objet
    Bonjour,
    j ai une fonction qui doit me retourner un objet pour que je puisse l'uiliser ensuite dans la fonction appelante, le probleme est que cet objet est detruit avant d etre renvoyé.

  2. #2
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Sois tu fais une allocation dynamique dans la fonction si tu tiens vraiment à retourner une valeur, soit tu passes un objet par référence (préférable).

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    On peut voir la fonction en question ?

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    Voici la fonction qui crée l objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    H5File* HDF5_Open(const string file_Name, const int Access)
    {
    	if(Access == READ_DATA || Access == DELETE_DATA)
    	{
    		cout<<"le fichier existe ps, lecture ou suppression impossible"<<endl;
    		//return -1;
    	}
    	else
    	{
    		/* creation du fichier */
    		H5File* file_obj = new H5File( file_Name, H5F_ACC_TRUNC );
    		return file_obj;
    	}
    }
    et l appel de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    H5File* file_obj = HDF5_Open(file_Name, WRITE_DATA);
    Ce qui pose probleme donc, c est que file_obj est detruit a la fin de la fonction HDF5_Open, l appel de la fonction recoit donc un pointeur incorrect!

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah non, l'objet alloué/la mémoire allouée n'est pas libéré(e), donc il existe bien après. Sauf que tu dois avoir des warnings dans ta compilation que tu ne résouds pas.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    effectivement, j ai regle le probleme, mais sinon, comment fait on pour retourner un objet par reference?

  7. #7
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    si ton objet est construit dans ta fonction, il est normal qu'il soit détruit à la fin de celle-ci, excepté si tu alloues dynamiquement l'espace memoire dédiée à celui-ci, bref que tu l'instancies à l'aide d'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonObjet *monObjet = new MonObjet();
    Sinon, comme le dit Joelle, tu peux passer une reference de ton objet en parametre de ta fonction et le modifier a l'interieur de celle-ci.

    EDIT: pourquoi mon avatar il s'annime pas

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

Discussions similaires

  1. probleme de retour automatique.
    Par samsso2005 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 14/03/2006, 12h06
  2. [3D] Probléme de jointure entre objet sous 3DSMAX
    Par astragoth dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 11/02/2006, 01h15
  3. Problème d'éclairage d'objet superposé
    Par yuriashford dans le forum OpenGL
    Réponses: 5
    Dernier message: 10/02/2006, 09h57
  4. Réponses: 3
    Dernier message: 08/09/2005, 10h45
  5. retour d'objet par référence...
    Par sas dans le forum C++
    Réponses: 15
    Dernier message: 28/05/2005, 17h54

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