Object Factory und Initalisierung von statischen Variablen



  • Ich benutze eine Variante der Object Factory.
    Die einzelnen abgeleiteten Klassen registrieren sich bei der Grundklasse über eine Funktion.
    Diese Funktion wird mittels eine statische Variable beim Programmstart aufgerufen.

    Also in etwa so:

    bool registerThis_ = register(typeID, pointerZuMakerFunktion);
    

    Nun sehe ich jedoch ein potentielles Problem darin, dass die Initialisierungsreihenfolge von statischen Variablen in C++ nicht fest vorgegeben ist. Und daher können die Variablen, welche die Registrierungen speichern sollen, noch nicht initialisiert sein, bevor die Registrier-Funktion aufgerufen wird.

    Es funktioniert zwar momentan, aber ich möchte halt nicht dass die Funktionalität von dieser Unbekannten abhängt.
    Kann man dieses Problem lösen oder ist die Registrierung mittels statische-Variablen-Initialisierung einfach zum Scheitern verurteilt?



  • Dafür benutzt man doch Funktionen folgender Bauart:

    FooBase& getFooBaseInstance()
    {
        static FooBase foo;
    
        return foo; // Typo korrigiert
    }
    


  • Danke! 😃


Anmelden zum Antworten