Bonjour,
Je developpe beaucoup en Java et je suis actuellement des cours de C++
Je travaille sur des exercices et là il y en a un sur lequel je bute.
Le voici : je dispose d'une classe F qui a pour attributs un tableau et sa taille.
Son constructeur est vide mais un setter petmet d'initialiser (et changer) le tableau et sa taille.
La classe dispose aussi d'une methode affichant les valeurs du tableau sur la console
Le but de l'exo et d'utiliser un tableau (et non un vector) et de résoudre le problème du cas où on supprimerait le tableau avant d'appeler la méthode print()
je n'ai pas mis le header qui contient simplement les signature des fonctions ainsi que le tableau et sa taille en attribut.
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 #include <iostream> #include "f.h" using namespace std; F::F() { } F::~F() { delete[] tab; } void F::setTab( int *_tab, int _tabLength) { tab=_tab; tabLength=_tabLength; } void F::print() { int i=0; for(i=0;i<tabLength;i++) cout<<"TAB["<<i<<"]="<<tab[i]<<endl; }
Le problème est que si dans le main on fait ceci dans le main:
ça plante ce qui est normal.
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 F* f = new F(); int * tab= new int[10]; int length=0; tab[length++]=20; tab[length++]=15; tab[length++]=10; tab[length++]=20; f->setTab(tab,length); delete[] tab; f->print();
Je dois modifier le code en utilisant nottament un ou des "const" pour ne plus qu'il soit possible d'avoir ce problème.
Avez vous une idée ?
Merci beaucoup
Partager