Bonjour,

Cette question fait plus ou moins suite a ma precedente question sur l'utilisation simultanee de plusieures class.
Probl de syntax decl de pl class

Je travaille pour le moment sur un code qui comprends plusieures class et ou une classe (A) utilise entre autre des instances d'une autre class (B)pour initialiser ses propre composants.

Pour l'instant je me limite au composant "t" de la class A qui est un pointeur
sur un array char.

Je veux ecrire une surcharge d'op. << pour imprime le contenu des carac. d'une instance et je l'ai redige de cette facon.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
//Surcharge de l'operateur cout<<
ostream& operator << (ostream& flux, const morceau& M){
const char* titr;
cout << "\n Caracteristique du morceau : ";
cout << "\n Titre : ";
titr = M.get_Titre();       //Ligne 64
flux << titr;
cout << "\n Duree : ";
return flux;
}//Fin Surcharge cout
Pour ce code jerecois le message d'erreur

Compilateur: Default compiler
Building Makefile: "C:\Dev-Cpp\Devoir_3\Makefile.win"
Exécution de make...
make.exe -f "C:\Dev-Cpp\Devoir_3\Makefile.win" all
g++.exe -c morceauImpl.cpp -o morceauImpl.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

morceauImpl.cpp: In function `std::ostream& operator<<(std::ostream&, const morceau&)':
morceauImpl.cpp:64: error: passing `const morceau' as `this' argument of `const char* morceau::get_Titre()' discards qualifiers

make.exe: *** [morceauImpl.o] Error 1

Exécution terminée
Comme dit je n'arrive pas a comprendre ce que je dois faire avec ca.
Bien sur t est private

J'ai un selecteur ecrit ainsi avec son implementation

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
 
//retour du titre du morceau Selecteur public dans classe morceau
const char* get_Titre(void); 
 
et ici son implementation
 
//retour du titre du morceau
const char* morceau::get_Titre(void){
return t;    
    }           
 
//Ici le constructeur utilise
//Impl. construc. par init.
        morceau::morceau(char* ti, duree du){
                           t = ti;
                           d = du;
                                 }
J'ai essaye la solution naive en ecrivant const partout ou cela avait l'air raisonnable, mais bon voila


D'avance merci

marc_3