Tableaux bugés dans les classes ?

Résolu
GhostUser Messages postés 183 Statut Membre -  
GhostUser Messages postés 183 Statut Membre -
Bonjour,

Je suis débutant en C++, et j'ai vraiment de faire un certain programme.
Dans celui-ci j'imbrique des classes ayant pour attributs des tableaux d'objet, j'y ai rencontré un problème que je n'arrive pas à résoudre. J'ai donc crée un petit programme Test afin de voir ce qui se passe mal mais sans succès, je vous copie ce meme programme test ici:





#include <iostream>

using namespace std;

class Objet1
{
public:
Objet1()
{
int i=0;
while(i<=5)
{
Valeurs[i]=7;
i++;
}

}
int Get_Valeurs(int i)
{
return Valeurs[i];
}

private:
int Valeurs[5];

};


class Objet2
{
public:
Objet2()
{

}
Objet1 Get_Objet()
{
return Objet;
}



private:
Objet1 Objet;

};




int main()
{
Objet2 m_Objet;

int i=0;
while(i<=5)
{
cout<<m_Objet.Get_Objet().Get_Valeurs(i)<<endl;
i++;
}

return 0;
}




Et voici ce que le programme affiche

"
7
7
7
7
7
5
"

Je voudrai qu'il affiche 7 partout ... on dirait que le contructeur n'a pas fonctionné pour la dernière case du tableau !

J'ai essayé d'acceder à la 6ème par un pointeur, mais le programme "cesse de fonctionner"

J'ai peut être commis une erreur toute bête mais s'il vous plait aidez moi cette erreur me rend légèrement dingue.

Merci d'avance !

2 réponses

Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
une grosse erreur déjà, "int valeur[5]" défini un tableau de 5 cases, donc allant de 0 à 4 et non pas 5. Ce qui fait que tes while vont à chaque fois une case trop loin.
valeur[5] n'existant pas, il n'est pas étonnant que ça renvoie n'importe quoi.
1
GhostUser Messages postés 183 Statut Membre 10
 
D'accord ! Voilà pourquoi le seul moyen d'afficher que des 7 était d'incrémenter le tableau ! Et bien merci beaucoup !
0