auf Variablen von Klassen zugreifen



  • Hallo

    Ich habe folgendes Problem:

    Ich habe eine Header Datei Variablen.h. Diese Datei enthält eine Klasse Variablen, in der "CString test" als public deklariert ist.

    Nun habe ich eine Datei in der ich der Variablen test in der Klasse Variablen einen Wert zuweise.
    Eine zweite Datei soll diesen Wert abrufen und ihn darstellen. Wie mache ich das, dass der Wert abrufbar ist?

    Bei mir ist die Variable in der zweiten Datei dann immer leer!



  • Zeig bitte etwas Code. 🙂



  • Variablen.h:

    class Variablen {
    public:
    CString test;
    };

    Test.cpp:

    #include Variablen.h

    Variablen var;
    var.test = "test";

    Test2.cpp:

    #include Variablen.h

    Variablen var;
    CString test2 = var.test;

    Jetzt soll es so sein, dass die Variable test2 von Test2.cpp den Wert "test" enthält

    Ich hoffe das reicht so grob!



  • 1. (!) Variablen macht man nie public. Lass es sein, auch wenns dadurch auf den ersten Blick umständlicher wird.

    2. Auf globaler Ebene kannst du keine Anweisungen schreiben. Wann soll die Zuweisung denn ausgeführt werden?
    3. var und var sind nicht dieselbe Variable, da du sie zweimal definiert hast.
    Wegen 2 und 3 wird der Code, den du gepostet hast, nicht kompilert werden.



  • das mit globaler Ebene ist mir schon klar, das war ja auch nur ein Auszug....es soll einfach nur mein Problem im groben darstellen

    ich will einfach nur von der einen Datei die Variable bearbeiten und die bearbeitete Variabel von einer anderen Datei aus abrufen!



  • Ich sagte doch mach die Variable private. 🙂

    Klassenvariablen gehören immer zu einer bestimmten Instanz der Klasse. Das heißt, dass dieselbe Instanz in beiden Dateien bekannt sein muss. Du kannst sie z.B. als Parameter übergeben.
    (Nein, die Möglichkeit die Instanz global zu deklarieren erwähne ich jetzt nicht, da das in den seltensten Fällen sinnvoll ist).



  • @cd9000:

    Da wär's doch mal gut ein einfaches Beispiel für die FAQ zu schreiben. An dem Problem mehrere Variablen oder eine eigene Structur zu definieren, die dann von mehreren Units gelesen und verändert werden kann, häng ich auch.

    Ich hab's jedenfalls bisher noch nicht gepackt dabei um "extern" herumzukommen, was ja kein guter C++ Stil sein soll.

    Gruß WoWe



  • Das hängt sehr vom konkreten Problem ab.

    Mal ist es sinnvoll die Variable einer anderen Klasse als Referenz mitzugeben, mal als Parameter einer Methode. Je nachdem wie oft, wo und wozu sie gebraucht wird.

    Selten (aber nicht nie) ist es sinnvoll, globale Variablen zu benutzen.





  • Naja, nicht alles was mal über eine Übersetzungseinheit hinaus benötigt wird ist gleich ein Fall für's Singleton. Das halte ich hier für ziemlich unangebracht. Ein einfaches extern tut's in diesem Falle auch.

    MfG Jester



  • Un wie würde das dann mit extern aussehen, wenn man eine Klasse extern verfügbar machen will?


Anmelden zum Antworten