#include <iostream>
using namespace std;
class T1
{
const int t = 100;
public:
T1()
{
cout << "T1 constructor: " << t << endl;
}
};
Lorsque j'essaie d'initialiser la variable membre const t
avec 100. Mais cela me donne l'erreur suivante :
test.cpp:21: error: ISO C++ forbids initialization of member ‘t’
test.cpp:21: error: making ‘t’ static
Comment puis-je initialiser une valeur const
?
La variable const
précise si une variable est modifiable ou non. La valeur constante assignée sera utilisée chaque fois que la variable sera référencée. La valeur assignée ne peut pas être modifiée pendant l'exécution du programme.
Bjarne Stroustrup's explanation résume brièvement la situation :
Une classe est généralement déclarée dans un fichier d'en-tête et un fichier d'en-tête est généralement inclus dans de nombreuses unités de traduction. Cependant, pour éviter des règles de liaison compliquées, le C++ exige que chaque objet ait une définition unique. Cette règle serait brisée si C++ permettait la définition en classe d'entités devant être stockées en mémoire en tant qu'objets.
Une variable const
doit être déclarée dans la classe, mais elle ne peut pas être définie dans celle-ci. Nous devons définir la variable const en dehors de la classe.
T1() : t( 100 ){}
Ici, l'affectation t = 100
se produit dans la liste des initialisateurs, bien avant l'initialisation de la classe.
Vous pouvez mettre à niveau votre compilateur pour qu'il prenne en charge C++11 et votre code fonctionnera parfaitement.
Utilisez la liste d'initialisation dans le constructeur.
T1() : t( 100 )
{
}