Strukur oder klasse



  • Hallo Leute,

    ich habe folgendes Problem.
    Ich baue eine mehrschichtige Software. von der obersten Schicht will ich eine Funktion aufrufen. Diese soll Geräte zählen,nummerieren, und paar geräteeigenschaften auslesen und speichern. Ich habe mir vorgestellt eine Klasse oder Struktur mit den Elementen des Gerätes zubauen. So nun mein Problem. Wenn ich in der Funktion ein Array von Objekten oder ein Array für Variablen anlege, sind die ja nur für diese Funktion gültig und ich kann nirgendwo anders mehr auf das Array(Liste) von Geräteobjekten zugreifen. Ich will aber überall die Liste verfügbar haben. Wie könnte man das machen.

    Gruß



  • Dann mach die Objekte halt nicht im Scope einer Funktion, sondern einer Klasse und dann hälst du einfach eine Instanz dieses Objektes und dann hast du auch die Daten verfügbar.



  • Struktur und Klasse sind bis auf die Sichtbarkeit und die vererbte Sichtbarkeit identisch.



  • Danke erstmal für die Antwort auch wenn ich sie nicht ganz verstehe. Ich kann die Objekte ja nur in der Funktion anlegen, weil ich ja nur in der Funktion mitbekomme, wieviel Objekte ich brauch. Oder wie meinst du das?

    Gruß



  • Energie2009 schrieb:

    Ich kann die Objekte ja nur in der Funktion anlegen, weil ich ja nur in der Funktion mitbekomme, wieviel Objekte ich brauch.

    Ja, aber das heisst nicht, dass die erstellten Objekte auch nur funktions-lokal leben (d.h. beim Zurückkehren zum Aufrufer zerstört werden).

    Eine Möglichkeit besteht darin, dass du die Liste als Member einer Klasse speicherst und dann in Memberfunktionen die Daten einliest. Oder du tust das in globalen Funktionen, welche ihrerseits Funktionen der Klasse aufrufen, um diese mit Daten zu versorgen. Welchen Weg du wählst, hängt von deinem Design ab (ob das Dateneinlesen zur Klasse gehört und z.B. Zugriff auf private Variablen benötigt).

    Ach ja, und nimm für die Liste STL-Container, keine Arrays. Die sind um einiges komfortabler, sicherer und möglicherweise je nach Datenstruktur sogar schneller als manuell mit new[] und delete[] verwaltete dynamische Arrays.


Anmelden zum Antworten