hmm: C++: char* behält zugewiesenen wert und std::string nimmt default an... wieso?

Beitrag lesen

Hi Leute,

bei meinen Versuchen eine C++ Bibliothek per JavaScript zu visualisieren bin ich auf folgendes gestoßen:

class Bla
{
  public:
    static std::string a;
    static std::char* b;
    ~Bla()
    {
      printf(a);
      printf(b);
    }
} Bla;

std::string Bla::a = "";
std::char* Bla::b = "";

irgendEinKlasse::FunktionDieAufgerufenWird()
{
  Bla::a = "test";
  Bla::b = "test";
}

wenn ich das mache so ist im Destruktor ~Bla a="" und b="test".

woran liegt das?

wie kann ich dafür sorgen, dass std::string a im Destruktor von Bla den Wert behält den es von irgendEinKlasse::FunktionDieAufgerufenWird() bekommen hat? Mein Ziel wäre es, später in irgendEinKlasse::FunktionDieAufgerufenWird() anstelle eine std::string ein eigenes kompliziertes datenobjekt zu setzen und dass dann im destruktor abzufragen... aber dafür muss ich erstmal verstehen wie ich machen kann das std::string a seinen wert behält.

Ideen und/oder Erklärungen?

akzeptierte Antworten