Bonjour à tous,

Je voudrais savoir comment définir correctement des constantes dans une classe de tel façon que chaque objet de cette classe est cette vealeur constante.

Je m'explique, je voudrais que l'attribut "Cout" soit une valeur constante de la classe "Noeud".

Donc j'ai définit la classe suivante dans Noeud.h:

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
class Noeud
{
public :
//Constructeur
Noeud(int k);
 
//Accesseurs
int get_Num(); 
bool get_Etat();
 
//Modificateur
void set_Etat(bool a); 
 
void afficher();
 
protected :
 
//Attributs d'un Noeud
const int Num;     //Numéro du Noeud
static const float Cout;                      //Cout du Noeud
bool Etat;
};
#endif
et voici l'implémentaton de cette même classe dans "Noeud.cpp":

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
Noeud::Noeud(int k)
{
Num = k;
//Description des différents couts
float Mat_EXC = 20.44;
float Mat_OXC = 10.78;
float Site_Noeud = 7.67;  
Cout = Mat_EXC + Mat_OXC + Site_Noeud;
}
//Accesseurs
int Noeud::get_Num() {return Num;}
bool Noeud::get_Etat() {return Etat;}
 
//Modificateur
//void Noeud::set_Num(int a) {Num = a;}
void Noeud::set_Etat(bool a) {Etat = a;}
 
void Noeud::afficher()
{
cout << "N[" << Num << "] = " << Etat << endl;
}
Comme on peut voir "Cout = Mat_EXC + Mat_OXC + Site_Noeud", et donc l'initialisation de la variable "Cout" se fait lors de la création de l'objet et est définit grâce à l'implémentation dans "Noeud.cpp".

Est il possible d'écrire:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
float Mat_EXC = 20.44;
float Mat_OXC = 10.78;
float Site_Noeud = 7.67;  
static const float Cout = Mat_EXC + Mat_OXC + Site_Noeud;
ou quelque chose du genre dans mon fichier "Noeud.h" ou "Noeud".cpp

Mon problème est que j'ai appris le JAVA avant de me lancer dans le C++ et j'ai donc du mal à saisir le principe d'écriture de classe en C++.

Merci de pouvoir m'éclairer.