[ded]Syntax Decl tabl. d'Inst. Classe comme membre classe
Bonjour,
J'ecris une classe qui a pour membre un tableau d'instance d'une autre classe et j'aimerai en meme temps utilise un pointeur.
J'ai bien trouve des exemple pour faire des decl. dans une implementation directement dans un main mais pas comme membre de classe.
Est- ce que quelqu'un peut me montre cela.
Pour l'instant j'ai pour ma classe disque
Code:
1 2 3 4 5 6 7 8
|
class disque{
private:
/////////////////////////////
//Decl. Variables de class
//////////////////////////////
morceau *tablMorceau; // Decl. d'un pointeur sur tableau de morceaux
int nBM; // nombre de morceaux |
Et plus loin dans l'implementation j'ecris une surcharge pour remplir un tableau pointe par morceau *tablMorceau
Fragment appele dans main. Morceau est un des elem du tableau pointe
Code:
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 33 34 35
|
//surcharge de l'operateur >>cin , Saisie pour objet disque
istream& operator >> (istream& fluxD, disque& D){
cout << "\n Donnez SVP un nombre de morceaux pour le disque ";
cout << "\n compris entre min = 1 et max = 15, entree << = ";
//Creation disque = tableau de morceaux
int nbMorc; //Decl var nb de morceau choisit
cin>>nbMorc; //Init var nb de morceau choisit
//Test if saisie acceptee creation disque else refaire saisie
//maxMorc constante decl dans disque.h
if (nbMorc > 0 && nbMorc < maxMorc){ //Debut If
D.nBM = nbMorc; //Chargement nb de morceau dans IC
} else{ //Fin IF Debut else
while (nbMorc < 0 || nbMorc > maxMorc){ //While saisie incorrecte pour nb. Morceau
cout << "\n L'entree du nombre de morceaux(s) est refusee";
cout << "\n Veuillez refaire la saisie du nb de morceau(s) : ";
cout <<"\n";
cin>>nbMorc;
D.nBM = nbMorc;
} // Fin While saisie OK
} // Fin else saisie terminee
cout << "\n Le nb de morceau(s) est egal a : "<<nbMorc;
cout <<"\n";
morceau *tableauMorceau; //Decl. d'un pointeur
tableauMorceau = new morceau[nbMorc]; //Decl. du tableau de morceaux
//Remplissage du disque
for (int i = 0; i < nbMorc; i++ ){ //Debut boucle for pour remplissage du disque
morceau M; //Decl. morceaux
cin>> M; //chargement
tableauMorceau[i] = M;
} //Fin boucle for = disque remplis
D.*tablMorceau = *tableauMorceau;
return fluxD;
} //Fin de surcharge cin pour disque |
L'idee est de remplir le tableau a travers le for() et ensuite d'associe l'adresse du tableau au pointeur membre de classe.
J'en ai beaucoup parle a mon compilateur qui me renvoie regulierement ceci
Citation:
disque.cpp: In function `std::istream& operator>>(std::istream&, disque&)':
disque.cpp:64: error: `tablMorceau' undeclared (first use this function)
disque.cpp:64: error: (Each undeclared identifier is reported only once for each function it appears in.)
make.exe: *** [disque.o] Error 1
Exécution terminée
En fait par analogie je veux faire avec
D.*tablMorceau = *tableauMorceau;
Ce que je fait avec cela qui n'a pas l'air de pose de probleme
D.nBM = nbMorc;
Est-ce que quelqu'un peu m'aider?
(Si vous pensez que l'idee de base n'est pas terrible SVP faite en part)
D'avance merci
Marc_3