problème avec mon constructeur
Bonjour, j'ai une classe que voici :
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 36
|
class Classe
{
private :
int _num; /* numero de la classe */
int _aine, _benj;
int _eff; /* effectif de la classe : somme des effectifs des classes ainee et benjamin */
double _ward; /* critere de ward */
double _ind; /* indice d'agregation */
public :
/* constructeur par defaut */
Classe();
/* constructeurs */
Classe(int num);
Classe(int num, double ward, double ind, const Classe & c1, const Classe & c2);
/* destructeur */
~Classe() {};
/* renvoie la valeur du critere de Ward */
const double & getWard() {return _ward;};
/* renvoie la valeur de l'indice d'agregation */
const double & getIndice() {return _ind;};
/* renvoie la valeur de l'effectif de la classe */
const int getEffectif() {return _eff;};
/* renvoie la valeur du numero de la classe */
const int & getNum() {return _num;};
}; |
dont l'implementation est :
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
|
#include "Classe.h"
/* constructeur par defaut */
Classe::Classe()
{
_num = _aine = _benj = _eff = 0;
_ward = _ind = 0.;
}
/* constructeurs */
Classe::Classe(int num)
{
_num = _aine = _benj = num; _eff = 1;
_ward = _ind = 0.;
}
Classe::Classe(int num, double ward, double ind, const Classe & c1, const Classe & c2)
{
int num1 = c1.getNum(), num2 = c2.getNum();
_num = num; _ward = ward; _ind = ind; _eff = c1.getEffectif() + c2.getEffectif();
if(num1 < num2)
{
_aine = num1; _benj = num2;
}
else /* num1 > num2 car par construction on sait que num1 != num2 */
{
_aine = num2; _benj = num1;
}
} |
Mon constructeur Classe::Classe(int num, double ward, double ind, const Classe & c1, const Classe & c2) a une erreur à la compilation :
Citation:
error C2662: 'Classe::getNum' : cannot convert 'this' pointer from 'const Classe' to 'Classe &'
1> Conversion loses qualifiers
je ne vois pas trop ce que je dois changer...
Sinon, dans mon "Classe.h", que dois-je mettre
Code:
1 2 3 4 5
|
1) double getWard() {return _ward;};
2) const double getWard() {return _ward;};
3) const double getWard() {return _ward;} const;
4) const double & getWard() {return _ward;} const; |
Merci d'avance