Statischer Konstruktor



  • Hallo Forum,

    wie definiert man einen statischen Konstruktor unter C++? Also einer der beim ersten Laden einer Klasse aufgerufen wird.

    Vielen Dank

    Luigi



  • Statische Konstruktoren gibt es nicht.
    Meinst du eine Funktion, die aufgerufen wird, wenn die erste Instanz einer Klasse erzeugt wird?
    Da wüsste ich mir nur duch eine statische bool-Variable zu helfen, die entsprechend aussagt, ob schon ein Objekt der Klasse erzeugt wurde und einem entrsprechenden Test im Konstruktor der Klasse.

    Was genau möchtest du erreichen?



  • Was meinst du mit Laden?

    Eine statische Funktion muss ja irgendwo aufgerufen werden und da kannst du dann ja einfach die gewünschte Funktion aufrufen..

    Ich habe aber irgendwie das Gefühl, dass du irgendwas in Richtung Singleton willst. (Das einmalige erstellen eines Objektes und dann die Verwendung dieses Objektes)

    Wenn es das nicht ist, dann solltest du mal genauer sagen, was du erreichen willst. Wahrscheinlich gibt es bessere Mittel und Wege.



  • Luigi_X schrieb:

    Hallo Forum,

    wie definiert man einen statischen Konstruktor unter C++? Also einer der beim ersten Laden einer Klasse aufgerufen wird.

    Vielen Dank

    Luigi

    Ich denke Du meinst ein Singleton:

    class mySingleton
    {
    private:
       mySingleton() {}
       mySingleton(const mySingleton&) {}
       mySingleton& operator=(const mySingleton&) { return *this; }
    public:
       ~mySingleton() {}
    
       static mySingleton& getInstance() 
       {
         static mySingleton theOneAndOnly;
         return theOneAndOnly;
       }
    };
    

    rya.



  • In C++ werden Klassen nicht geladen, also gibt es sowas auch nicht.



  • Ach so. Ich wollte bei der ersten Instanz eine Konfig Datei für alle weiteren Instanzen einlesen. Dann mache ich das mit einer static Variablen.
    Vielen Dank Euch allen 🙂



  • Ich glaube der OP hat einfach zuviel C# geschnüffelt, und such nun in C++ das was man in C# einen statischen Konstruktor nennt.
    (EDIT: C# oder C++/CLI, denn in C++/CLI gibt's ja auch statische Konstruktoren /EDIT)


Anmelden zum Antworten