Bonjour,
Je suis débutant en C++ et je rentre dans le vif du sujet en bossant sur un projet en partie en C++. J'ai un programme qui plante, j'ai dû mal à comprendre pourquoi. Voici un code simplifié qui me ressemble reproduire le use case :
Lors de l'exécution de test.run(), le programme crashe. Je n'ai pas de possibilité simple de déboguer le programme mais en bricolant un peu, j'ai "résolu" le problème en modifiant la façon d'initialiser le champ [c]process[/] de la classe Test :
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> class Process { public: void printSomething(void) { std::cout << "Process is printing something"; } }; class Test { public: Process *process; Test() : process() { } virtual ~Test() { delete process; } int run(void) { process->printSomething(); return 0; } }; int main(void) { Test test; return test.run(); }
Il me semblait que les 2 façons étaient équivalentes... Donc soit elles ne le sont pas, et je vais vous demander pourquoi ? Soit elles sont équivalentes et le programme tombe en marche...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Test() { process = new Process(); }
Merci pour vos lumières !
PS : question annexe --> mon destructeur est correct ?
Partager