Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Initialisierung von static const std::string

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.04.2007, 22:27 Uhr
~FelixManke
Gast


Hi,

ich habe folgende Klasse definiert (im *.h file):

C++:
    class ParameterTypeNames
    {
    public:

        static std::string FLOAT;
        static std::string INT;
        static std::string UINT32;
        // ....

    private:
        inline ParameterTypeNames(){};
    };


und die static string wir folgt initialisiert (im *.cpp file):

C++:
    std::string ParameterTypeNames::FLOAT         = "Float";
    std::string ParameterTypeNames::INT           = "Int";
    std::string ParameterTypeNames::UINT32        = "UInt32";
    // ....


und die Konstanten dann in einem Konstruktor während des Programmablaufs wie folgt benutzen wollen:

C++:
    CParameterFactory::CParameterFactory()
    {
        std::string s = ParameterTypeNames::FLOAT;
        // ....
    }



Leider ist s ein leerer string. Wie kommt das denn?? Was mich besonders irritiert, dass ich die Klassen aus einem anderen Projekt kopiert habe, wo ich sie bereits auch gleiche Weise genutzt habe.

Ich benutze übrigens VC 8.

Über Rat wäre ich überaus dankbar :-)

Grüße,
Felix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.04.2007, 22:32 Uhr
WinniePooh



(Hab mir gerade mal nen Benutzer angelegt).

Ich dachte, dass static const variablen bereits bei Compilezeit initialisiert werden. Ist das falsch??

Thanks,
Felix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2007, 23:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
muss nicht, in deinem Fall sind es aber auch keine const-Variablen, sondern sind nur static.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.04.2007, 03:45 Uhr
WinniePooh



Hi, das mit dem const ist mir vorher nicht aufgefallen -- danke. Aber es ändert auch leider nix. Mit static const std::string ... sind die Konstanten immer noch nicht mit den Werten initialisiert, sondern empty.

Aber wie schaffe ich es denn sonst, sicher zu stellen, dass die Konstanten initialisiert sind?? Ich habe ja keinen static Constructor wie in C# oder etwas ähnliches.

Grüße,
Felix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.04.2007, 07:14 Uhr
Tommix



'Morgen,
der Code, so wie Du ihn gepostet hast, funktioniert. Der Fehler liegt offenbar irgendwo ausserhalb. Beachte das s eine lokale Variable ist und kein Member!

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.04.2007, 13:50 Uhr
BoBtheREapER
kein job für nen BoB


btw. du kannst die Strings wenn sie statisch sind auch gleich in der Klassendeklaration initialisieren, dann ist das ganze auch noch etwas übersichtlicher.
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.04.2007, 08:05 Uhr
stephanw
localhorst


@BoBtheREapER: Das geht nicht. Welcher Compiler nimmt Dir das ab ?
--
Reden ist Schweigen und Silber ist Gold.

Dieser Post wurde am 25.04.2007 um 08:06 Uhr von stephanw editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.04.2007, 09:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von stephanw:
@BoBtheREapER: Das geht nicht. Welcher Compiler nimmt Dir das ab ?

const-static sollte er in der .h-file initialisieren lassen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: