Initialisation d'un attribut static const [Résolu]

Signaler
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010
-
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010
-
Bonjour à tous,

J'aimerai pouvoir disposer d'un attribut (protected) _nomClasse qui contiendrait le nom de la classe. Ce nom doit être le même pour toutes les instances de la classe et ne doit pas pouvoir être modifié par ces instances. Pour info, j'utilise la librairie ACE, je code en C++ sous visual studio 2008.

Pour cela, dans MaClasse.h, à l'intérieur de la section "protected":

static const ACE_TString _nomClasse;



Puis je l'initialise dans MaClasse.cpp à l'extérieur de tout bloc de code:

ACE_TString MaClasse::_nomClasse = ACE_TString("MaClasse");



Malheureusement, à la compilation, j'ai l'erreur suivante:

error C2373: '_nomClasse' : redéfinition ; modificateurs de type différents

Auriez-vous des informations, des pistes pour m'aider à initialiser correctement mon attribut ? Je précise que j'ai essayé de l'initialiser en même temps que ça déclaration dans le .h:

static const ACE_TString _sNomClasse = ACE_TString("MaClasse");


mais que j'ai obtenu l'erreur:

error C2864: 'MaClasse::_nomClasse' : seules les données membres static const intégrales peuvent être initialisées dans une classe


Merci d'avance pour votre aide !
A voir également:

1 réponse

Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010

Finalement, j'ai trouvé le problème,

il suffisait de rajouter le 'const' dans l'initialisation:

const ace_tstring maclasse::_nomclasse = ace_tstring("maclasse");