Geschachtelte Klassen



  • Hi,

    wir haben neulich eine Aufgabe von unserem Dozenten bekommen, in der wir ein Tankstellennetz realisieren sollen. In der Aufgabe steht folgende Anweisung:

    Ein Filialenobjekt besitzt folgende Attribute: Anschrift,....!
    Das Attribut Anschrift ist vom Typ Adresse, der als geschachtelte Klasse
    zu realisieren ist.

    Da ich kein grosser Freund von Klassen bin, lege ich den Typ Adresse als Struktur an. Ist ja eigentlich egal!
    Das ganze sieht dann so aus:

    //Filiale.h

    #include <iostream.h>
    #include <conio.h>

    class Filiale {
    public:
    struct Adresse{
    char *Strasse;
    int Hausnummer;
    int Postleitzahl;
    char *Wohnort;
    };
    private:
    float Umsatz;
    float Literpreis;
    float Tankvolumen;
    float Tankfuellstand;
    int Kundenzahl;
    };

    Im Main habe ich folgendes stehen:

    #include <iostream.h>
    #include <conio.h>
    #include "filiale.h"

    int main()
    {
    Adresse A;
    A.Strasse="Strasse";
    A.Hausnummer=12;
    A.Postleitzahl=12345,
    A.Wohnort="Irgendwo";
    getch();

    return 0;
    }

    Der Compiler meint, dass er Adresse nicht kennt und A auch nicht. Was mache ich falsch? Vielleicht kann jemand von euch mir weiterhelfen.

    Danke

    Paulchen26



  • Adresse liegt doch als Struktur in der Klasse Filiale. Erst eine Object (oder Instanz, was du willst) der Klasse Filiale erstellen, dann gibts auch die Struktur.



  • 1. benutz bitte die Code-Tags
    2. wenn du C++ lernen willst, solltest du zusehen, dass du ein Freund von Klassen wirst
    3. benutz nicht

    char* Adresse
    

    sondern lieber

    string Adresse
    

    Dazu musst du den Header <string> inkludieren.

    4. Benutz nicht <iostream.h> sondern <iostream>

    5. die obigen beiden Punkte sollte dein Dozent eigentlich kennen, da sie Standard-C++ sind, wenn er's nicht tut, ist er ein suboptimaler Dozent 😉

    6. zu deinem Problem: nicht

    Adresse A;
    

    sondern

    Filiale::Adresse A;
    

    Denn eine (global sichtbare) Klasse Adresse gibts ja nicht, du musst dem Kompiler sagen, dass du die Klasse meinst, die es Innerhalb von Filiale gibt



  • Solltest dir nochmal Pointer und Strings anschauen, du hast da was Grundlegendes nicht verstanden.
    Hier ein Link dazu:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39462



  • Und weiterhin macht es keinen Sinn die Struktur in Filiale zu tun, schließlich gibts Adressen nicht nur bei Filialen, oder?



  • Lars schrieb:

    Und weiterhin macht es keinen Sinn die Struktur in Filiale zu tun, schließlich gibts Adressen nicht nur bei Filialen, oder?

    Das hab ich mir auch gedacht, allerdings steht das ja so in der Aufgabenstellung.


Anmelden zum Antworten