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é.
 
			
			






 
			
			
			
			 
			
				
 Probleme de retour d'objet
 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é.
 
 
				
				
						
						
				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).
 
 
				
				
						
						
				On peut voir la fonction en question ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				Voici la fonction qui crée l objet:
et l appel de la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
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!
Code : Sélectionner tout - Visualiser dans une fenêtre à part H5File* file_obj = HDF5_Open(file_Name, WRITE_DATA);
 
 
				
				
						
						
				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.
 
			
			






 
			
			
			
			 
			
				
 
 
				
				
						
						
				effectivement, j ai regle le probleme, mais sinon, comment fait on pour retourner un objet par reference?
 
 
				
				
						
						
				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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
EDIT: pourquoi mon avatar il s'annime pas
Partager