Bonsoir,
J'aimerais stocker dans un <vector> des objets CVecteur. Voici le patron de ma classe:
Tout d'abord le compilateur m'a demandé de surcharger operator=. Ce que j'ai fait comme suit:
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 class CVecteur { public: //constructeur et destructeur /.../ //surcharges CVecteur& operator=(const CVecteur&); /.../ protected: const int m_x; const int m_y; int m_xtemp; int m_ytemp; };
Mais une fois operator= implementé, le compilateur m'annonce:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CVecteur& CVecteur::operator=(const CVecteur& v) { m_x=v._x();m_y=v._y(); m_xtemp=v._xtemp();m_ytemp=v._ytemp(); return *this; }J'ai donc été contraint de supprimer les 'const' pour que ça passe./home/.../CVecteur.cc||In member function ‘CVecteur& CVecteur::operator=(const CVecteur&)’
/home/.../CVecteur.cc|10|erreur: assignment of read-only data-member ‘CVecteur::m_x’|
/home/.../CVecteur.cc|10|erreur: assignment of read-only data-member ‘CVecteur::m_y’|
- Y-a-t'il un moyen de contourner cela? J'aimerais malgré tout que ces membres restent 'const'
- Dans un fichier d'en tête "constantes.h" j'ai également déclaré des "CVecteur" comme suit:
Cela sert-il à quelque chose de déclarer des objets d'une classe 'const' sachant que ces mêmes objets possèdent des fonctions susceptibles de modifier les valeurs de certains de leurs membres ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //vecteurs type static const CVecteur FOU1=CVecteur(1,1); static const CVecteur FOU2=CVecteur(1,-1); static const CVecteur FOU3=CVecteur(-1,-1); /.../
Partager