Globaler Zugriff auf eine Liste



  • So, jetzt bin ich registriert und keiner kann mehr unter meinem Namen posten.
    Aber zurück zum Thema:

    Wenn ich die Liste als Parameter übergebe, dann wird die Liste nicht komplett kopiert, sondern es wird nur ein Verweis auf die Liste übergeben, oder ?
    Bin ich da richtig informiert ?

    Denn die Liste kann mehrere tausend Objekte beinhalten. Wenn bei jeder Parameterübergabe die komplette Liste kopiert würde, dann würde mein Programm vermutlich sehr langsam laufen.

    Gibt es vielleicht noch eine andere Möglichkeit so etwas zu realisieren ?
    Ich stell mir das so vor wie bei globalen Variablen. Man schreibt z.B. in einer Klasse mit dem Namen "Variablen":

    static int wert;

    und kann dann von jeder Funktion aus auf die Variable zugreifen:

    Console::WriteLine(Variablen::wert);

    Geht so etwas mit einer Liste nicht ?

    Danke,
    mfg arena_blau

    ----------------------------



  • arena_blau schrieb:

    kopiert, sondern es wird nur ein Verweis auf die Liste

    Dafür sorgt das ^ nach dem Typ in der Zeile:

    void ausgabe(List<objekte^> ^ container)



  • Hallo,
    gibt es noch eine andere Möglichkeit als die Liste (oder den Verweis auf die Liste) als Parameter zu übergeben ?

    Kann ich die Liste nicht einfach global verfügbar machen ? So wie z.B. Variablen in einer Klasse, die man einfach static macht.

    Danke,
    mfg arena_blau

    ----------------------------



  • arena_blau schrieb:

    Hallo,
    gibt es noch eine andere Möglichkeit als die Liste (oder den Verweis auf die Liste) als Parameter zu übergeben ?

    Kann ich die Liste nicht einfach global verfügbar machen ? So wie z.B. Variablen in einer Klasse, die man einfach static macht.

    Danke,
    mfg arena_blau

    ----------------------------

    In C++/CLI gibt es keine globalen Variablen.
    Das Singleton Pattern würde Dir weiterhelfen.

    Jedoch bezweifle ich, dass dies in deinem Kontext wirklich angebracht ist.

    Vielmehr könntest Du die Liste abstrahieren (dabei ist die List<T> ein Member).

    Simon



  • Hallo,

    # Vielmehr könntest Du die Liste abstrahieren (dabei ist die List<T> ein
    # Member).
    Du meinst, dass ich List<T> in eine Klasse schreiben soll und dann eine Instanz der Klasse anlegen soll ? Versteh ich jetzt ehrlich gesagt nicht ganz.

    Könntest du mir dazu vielleicht einen kurzen Beispielcode schreiben ?

    Das ist nochmal das Beispiel so wie ich die Liste bisher anlege (in main()):
    List<objekte^> ^container = gcnew List<objekte^>();
    container->Add(gcnew objekte(111));

    Danke,
    mfg arena_blau

    -----------------------------



  • Benutze doch bitte Codetags!



  • Hallo,

    Vielmehr könntest Du die Liste abstrahieren (dabei ist die List<T> ein Member).

    Könntest du mir dazu einen kurzen Beispielcode posten ?

    Wenn die Liste ein Member ist, dann muss ich die Klasse ja auch wieder z.B. in main() anlegen. Dann habe ich von anderen Funktionen aus, auch keinen Zugriff darauf, oder ?

    Oder hast du das anders gemeint ?

    Danke,
    mfg arena_blau

    --------------------------------



  • arena_blau schrieb:

    Könntest du mir dazu einen kurzen Beispielcode posten ?

    Grundlagen, Gruuuuunnnnndlagen, guck doch mal ins Buch Kollege.

    Sollen wir Dir noch Dein Brei vorrühren?

    Meine nerven nochmal...

    Ein wenig Eigeninitiative wäre schon nicht schlecht...

    Aber trotzdem noch alles Gute zum Muttertag... 🙄



  • Hallo,

    # Grundlagen, Gruuuuunnnnndlagen, guck doch mal ins Buch Kollege.
    Ich hab ein ganzes Buch zu C++.NET gelesen (Jetzt lerne ich Visual C++ 2008). Die Grundlagen beherrsche ich mittlerweile eigentlich schon ganz gut.

    # Ein wenig Eigeninitiative wäre schon nicht schlecht...
    Es ist ja nicht so, dass ich mir keine Mühe gebe, nur ist C++.NET auch nicht ganz so einfach. Ich habe bisher fast nur mit VB6 programmiert. Da ist alles ein wenig einfacher.

    Ausserdem habe ich im Netz schon nach einer Lösung für mein Problem gesucht. Konnte aber leider nichts finden.

    Helft mir doch bitte auf die Sprünge.

    Danke,
    mfg arena_blau

    -----------------------------



  • Global gibt es in .Net nicht. Dafür aber statische Klassen und statische Member.

    Ansonsten schau im Grundlagenbuch unter dem Kapitel "Globale Variablen" nach. Manchmal sparen sie viel arbeit. In Normalfall erzeugen sie jedoch viel arbeit im späteren Verlauf des Projektes.

    Ansonsten: Tags sind auch für Dich da.

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html


Anmelden zum Antworten