INTERRO Année 2007-2008[c++]

Voir le sujet précédent Voir le sujet suivant Aller en bas

INTERRO Année 2007-2008[c++]

Message  didi le Dim 08 Jan 2012, 17:49

bonsoir

j'ai une erreur d'execution dans le Code 4 de cet interro

Code:
#include <iostream.h>
#include <stdlib.h>
class Adt
{
int * tab;
unsigned size;
public :
Adt ( unsigned nb )
{
if ( nb == 0 ) nb = 1;
size=nb;
int * tab = new int[size];
for ( nb=0; nb<size; nb++ ) tab[nb]=nb;
}
void putAt(unsigned i, int val)
{
tab[i]=val;
}
int getAt(unsigned i) const
{
return tab[i];
}
};

int main()
{
Adt test(100);
cout << test.getAt(98) << endl;
return 0;
}

erreur vient de à la ligne cout << test.getAt(98) << endl;

MAIS si je modifie comme cout << endl << test.getAt(98) << endl;
je n'ai pas d'erreur et affiche .. 944791496 comme resultat

Merci Smile

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: INTERRO Année 2007-2008[c++]

Message  Aladin le Dim 08 Jan 2012, 18:08

Salut,

int * tab = new int[size];
Dans le constructeur tu n'initialises pas l'attribut mais une variable locale qui est détruite à la fin du bloc.

Bonne soirée et bonne merde pour cette session.

Aladin

Nombre de messages : 13
Prénom : Alaaedine
Date d'inscription : 14/05/2011

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum