Bonjour,
voilà je bute sur un problème d'allocation dynamique dans une fonction et je ne trouve pas de solution simple.
Il s'agit de passer un pointeur à une fonction (passage par adr), et la fonction devra, après un certain traitement, me créer une instance d'un objet convenablement initialisée.
Le problème c'est qu'il me semble que bien que mon objet (dans la fonction) soit alloué dynamiquement via "new", il est détruit à la sortie (en tout les cas ce n'est pas le bon objet que je reçoit).
Si quelqu'un pouvait m'expliquer comment ce genre de problème est réglé en C++ j'en serait très reconnaissant. J'ai beau revoir tous mes livres et toutes les explication sur le passage des objets en paramètre, sur l'allocation d'objet (statique et dynamique), sur les opérateurs new ... bref je trouve pas de solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #include <iostream> using namespace std; class Point { public: Point(){x = -1; y=-1;} Point(int pX, int pY){x = pX; y=pY;} void dump(){cout << "X: " << x << " Y: " << y << "\n";} int x, y; }; void modify(Point* pt) { pt = new Point(99, 88); } int main() { Point p1; Point* p2; p1.dump(); modify(p2); // ** devrait instancier p2 avec x=99 et y = 88 p2->dump(); // au lieu de x:99,y:88 j'ai n'importe quoi return 0; }
PS. Il est à noter que je **NE** veut **PAS** recevoir mon objet en valeur de retour de la fonction ... je veux le passer via un pointeur que je puisse modifier (en fait le code que je viens de poster est une simplification extrême d'un gros pb dans lequel je ne fais pas que instancier l'objet).
Partager