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
Et plus loin dans l'implementation j'ecris une surcharge pour remplir un tableau pointe par morceau *tablMorceau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Fragment appele dans main. Morceau est un des elem du tableau pointe
L'idee est de remplir le tableau a travers le for() et ensuite d'associe l'adresse du tableau au pointeur membre de classe.
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
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
J'en ai beaucoup parle a mon compilateur qui me renvoie regulierement ceci
En fait par analogie je veux faire avecdisque.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
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
Partager