Variable in Funktion überall bekannt



  • Hallo,
    Ich möchte eine Variable in einer Funktion initialisieren, diese soll aber überall bekannt sein.

    Bsp.:

    int main()
    {
    int blub; //hier initialisieren
    }
    
    void bla()
    {
    blub = 1 //sie soll auch hier verwendet werden können
    }
    

    gibt es dafür vlt. ein Schlüsselwort oder so?



  • Am besten Parameter verwenden:

    void bla(int& var)
    {
        var = 1;
    }
    
    int main()
    {
        int myVar = 0;
        bla(myVar);
        std::cout << myVar; // gibt 1 aus
    
        return 0;
    }
    

    Gruß
    DOn06



  • der vorposter meint referenzen 😃



  • Don06 schrieb:

    Am besten Parameter verwenden:

    void bla(int& var)
    {
        var = 1;
    }
    
    int main()
    {
        int myVar = 0;
        bla(myVar);
        std::cout << myVar; // gibt 1 aus
    
        return 0;
    }
    

    Gruß
    DOn06

    Ich will aber die Funktion nicht in main ausführen.



  • Wird eine Funktion weder direkt noch indirekt in main ausgeführt, wird sie _nie_ ausgeführt.

    Ausnahme ist hier ledeglich der Code der vor main ausgeführt werden kann (zB beim Initialisieren von globalen Variablen bzw. statischen Konstruktoraufrufen, usw.)

    Ich glaube du hast da irgendwas noch nicht verstanden. Erkläre mal dein Problem genauer.

    Gruß
    DOn06



  • indirekt wird sie schon ausgeführt 😉
    Ich will einfach dass die Variable in der ganzen Datei bekannt ist aber erst in main initialisiert wird, ist das nicht irgendwie möglich, ohne einen Parameter/Referenz/Zeiger zu nutzen?



  • es reicht wenn die Variable in allem was nach main() kommt bekannt ist.



  • Ja, aber... Wenn ich das jetzt sage ist dein Code-Stil für immer ruiniert 😞
    Ok, ich machs: globale Variablen. Pfui. Ekelig.
    Warum nimmst du nicht einfach die Referenzen?



  • also auch ich bin mir nicht ganz sicher was du meinst.
    reicht eine global deklarierte variable denn nicht?



  • Wenn überall bedeutet

    1. in einem .cpp File, dann nimm einen unbenamten namespace, also:
    namespace {
        int blub;
    };
    
    1. in mehreren .cpp Files, dann benutze das Singleton Entwurfsmuster, wenn Dir (wie mir auch) globale Variablen nicht gefallen

Anmelden zum Antworten