Globale Variable "später" initalisieren



  • Hallo,

    Ich will ein globales, mehrdimensonales dynamisches Array initalisieren und dabei habe ich folgendes Problem!
    Erstmal das Array:
    float*** Object = new float**[Count];
    Klappt alles super, auch das weitere verarbeiten aber ich habe folgendes Problem:
    Ich müsste eigentlich erst den Wert Count mit einer Funktion berechnen, da der Abhängig von der Anzahl verschiedener Dateien ist. Doch wie kann ich das machen? Ich kann ja nicht erst eine Funktion aufrufen und erst danach die Variablen instalisieren lassen (als die globalen). 😕

    Ps. Sorry wenn das in den C Bereich gehört!



  • Chris Benoit! schrieb:

    Ich kann ja nicht erst eine Funktion aufrufen und erst danach die Variablen instalisieren lassen (als die globalen).

    Warum denn nicht?

    (extern) float * global = nullptr;
    
    int main()
    {
       unsigned int count = berechneAnzahl();
       global = new float[count];
    }
    

    Müsste doch gehen, oder?
    Du darfst dann nur nicht darauf zugreifen, bevor du es initialisiert hast.

    Edit: Gerade zur Sicherheit mal bei ideone getestet, scheint alles zu klappen. Nur aus irgendeinem Grund kennt ideone mit ausgewählten C++0x kein nullptr 😕



  • Top! Danke 😉



  • Q schrieb:

    (extern) float * global = nullptr;
    
    int main()
    {
       unsigned int count = berechneAnzahl();
       global = new float[count];
    }
    

    Das extern sollte hier zuviel des Guten sein? Der Zeiger muss doch irgendwo definiert werden.



  • Deswegen ist es auch in klammern.

    Ich wollte damit einfach andeuten das es je nach kontext mit oder ohne extern sein kann.

    So wie ich das verstehe (ich benutze das eigentlich nie), schreibt man in den header extern und in eine cpp datei dann ohne extern.



  • std::vector


Anmelden zum Antworten