Static const string n'obtiendrez pas initialisé

J'ai quelques static const chaînes privées membres de ma classe C++. Je suis conscient de la déclaration .h et à la définition (et de l'initialisation).rpc pratique. Dans le constructeur de la classe, j'invoque une fonction qui utilise ces chaînes statiques. Étonnamment, lorsque dans le constructeur, les chaînes restent non initialisés (les cordes à vide), ce qui crée un problème.

Quelqu'un peut-il point de ce qui peut mal se passer ici? Je travaille avec l'utilisation de static const chaînes de tous les temps, mais n'a jamais couru dans de telles situations.

Mise à jour: m_data reste vide dans l'utilitaire(). J'ai une classe de Test de l'objet en tant que membre privé d'une autre classe.

Ici c'est une sorte de code que j'utilise:

//Test.h
class Test
{
public:
  Test();
private:
  void utility();

 static const std::string m_data;
};

//Test.cpp
const std::string Test::m_data = "Data";

Test::Test()
{
utility();
}

void Test::utility()
{
//use m_data here
}
Comment voulez-vous attendre de quelqu'un pour vous aider à trouver quel est le problème si vous n'avez pas pris la peine de poster tout le code? L'ESP?
Mon hypothèse est que ce sont std::string objets (comme revêtue de la const char*) et la classe de l'objet est à la portée globale et pour quelles raisons, se construit avant chaînes statiques 😉 autant que je peux le faire en l'absence de code.
L'explication de la différence de const char* façon: stackoverflow.com/questions/459942/...
Tandis que vous avez ajouté le code, vous avez oublié d'ajouter d'où vous appelez la Test constructeur.
Pourquoi ne pas vous lancer à votre code dans le débogueur, l'arrêter au moment où l'erreur se produit, et puis après la pile ici. C'est la seule façon que nous allons croire que ce n'est pas une initialisation statique bug.

OriginalL'auteur | 2009-09-23