Globale Vectoren Container?



  • Hi Leute,

    Ist es möglich globale vectoren zu erstellen? Gibt es das überhaupt?

    Zum Verständniss: Ich verstehe unter Globalen-(Vectorn, Variablen etc....)
    vectoren oder variablen, die vor der main funktion initialisiert werden und dann alle Funktionen darauf zugriff haben z.b.:

    int i = 1;
    
    int main()
    {
       cout<<i<<"\n";
    }
    
    int test()
    {
       cout<<i<<"\n";
    }
    

    Könnten in diesem Programm beide Funktionen also die main() und die test() funktion i ausgeben?

    Das wäre dann für mich eine globale Variable.

    Geht das auch mit vectoren?



  • Ja, es ist möglich - du kannst globale Variablen von jedem bekannten Datentyp erzeugen (abstrakte Klassen mal ausgenommen). Allerdings ist sowas üblicherweise schlechter Programmierstil, weil jeder ohne irgendwelche Kontrollen auf deine Daten zugreifen kann.



  • Wen du willst das dein vector von überall ereichbar ist musst du ihn nur
    Global initialisieren

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    vector<int> global;
    
    void test()
    {
        global.push_back(1);
    }
    
    int main()
    {
        test();
        cout << global[0];
        return 0;
    }
    

    Aber einen vector einen Wert zuzuteilen auserhalb einer Funktion geht meines wissens nicht.



  • Wie es geht wurde ja schon gezeigt, wie auch schon gesagt wurde ist es aber schlechter Programmierstil. Da solltest du dein Design nochmal überlegen, bzw andere Möglichkeiten wählen.
    Für solche Probleme, eignet sich oft auch eine Singleton-Klasse.

    Lg freeG



  • fr33g schrieb:

    Wie es geht wurde ja schon gezeigt, wie auch schon gesagt wurde ist es aber schlechter Programmierstil. Da solltest du dein Design nochmal überlegen, bzw andere Möglichkeiten wählen.
    Für solche Probleme, eignet sich oft auch eine Singleton-Klasse.

    Lg freeG

    Es gibt kein Unterschied zwischen globaler Variable und Sigleton verwendet als globale Variable! Sigleton machts nicht besser!!

    Edit:
    Sigleton lösen das Problem "das gewünschte Objekt erreichen" als Nebenprodukt. Die Idee eines Singletons ist es die Anzahl der existierenden Objekte auf genau eines zu begrenzen!



  • theta schrieb:

    fr33g schrieb:

    Wie es geht wurde ja schon gezeigt, wie auch schon gesagt wurde ist es aber schlechter Programmierstil. Da solltest du dein Design nochmal überlegen, bzw andere Möglichkeiten wählen.
    Für solche Probleme, eignet sich oft auch eine Singleton-Klasse.

    Lg freeG

    Es gibt kein Unterschied zwischen globaler Variable und Sigleton verwendet als globale Variable! Sigleton machts nicht besser!!

    Edit:
    Sigleton lösen das Problem "das gewünschte Objekt erreichen" als Nebenprodukt. Die Idee eines Singletons ist es die Anzahl der existierenden Objekte auf genau eines zu begrenzen!

    Ja klar, aber man kan sie auch genau zu diesem Zweck benutzen, finde das nicht schlimm das es nur der "Nebenzweck" ist, solange man mit einer Instanz auskommt ist es eine Alternative zum Globalen. Ist mir schon klar, dass es genau so schlecht ist diese dann global zu machen, aber das muss man ja auch nicht.

    Lg freeG


Log in to reply