frage zur globalen STL map
-
folgendes problem (hoffe jemand hat ne idee):
in file a.h:
class A { public: static map<string, int> s_map; };in file a.cpp
map<string, int> A::s_map;in file b.h
#include "a.h" class B { private: B() { s_map.clear(); s_map["hallo"] = 1; } static B s_globalB; };in file b.cpp
B B::s_globalB; ...Unter windows crasht mein prog nach erfolgreicher compilierung
in file a.h bei s_map.clear()nur wieso ?!?!? das ding ist doch global (ueber default konstr.) angelegt.
nur scheint nicht korrekt.was mache ich falsch ???
vielen dank
-
siehe hier
-
ihr seid die groessten

ich verneige mich
-
Benutz´ ein Singleton statt einer globalen Variable, damit löst sich dein Problem.
-
DocShoe schrieb:
Benutz´ ein Singleton statt einer globalen Variable, damit löst sich dein Problem.
Vielleicht löst es sich bereits schon durch besseres Design. pepe75, brauchst du da wirklich eine statische/globale Variable? Es scheint mir auch merkwürdig, dass du die statische Variable in einer nicht-statischen Memberfunktion (Konstruktor
B::B()) veränderst. Oder experimentierst du nur etwas herum?Ausserdem solltest du dir abgewöhnen, in Headerdateien
using namespacezu schreiben, da dann der Namensraum in allen inkludierenden Dateien offengelegt wird, was das Konzept der Namensräume sinnlos macht und zu Namenskonflikten führen kann.