Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

1

01.10.2012, 22:23

Instanzen von Klassen in Liste schreiben

Hallo @ all,
nach einiger Zeit Pause habe ich mir jetzt überlegt, mal wieder was lustiges zu programmieren. Und zwar soll es ein einfaches Adressbuch werden. Dafür habe ich folgende Klasse angelegt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Adressbuch
{
    public:
    string Vorname;
    string Nachname;
    string Strasse;

    char Telefonnummer[24];
    char Postleitzahl[10];
    char Hausnummer[8];

    Adressbuch();
    void Eintragbearbeiten();
    void Eintragansehen();
    void Listespeichern();
};

Nun gebe ich ein Menü in der Konsole aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
cout << "A d r e s s b u c h" << endl;
        cout << "-------------------" << endl << endl;

    cout << "[1] Neuer Eintrag" << endl;
    cout << "[2] Eintrag bearbeiten" << endl;
    cout << "[3] Eintrag ansehen" << endl;
    cout << "[4] Liste speichern" << endl;
    cout << "[5] Beenden" << endl << endl;
    cout << "Eingabe: ";
    cin >> Eingabe;

Eigentlich ganz simpel. Nun wird bei wählen des ersten Eintrags eine neue Instanz der Klasse erstellt und die gesuchten Info's werden abgefragt. Nun kommt das Problem: Nach dem erstellen der 1. Instanz würde ja theoretisch eine weitere Instanz mit dem selben Namen erstellt werden. Das geht nun aber nicht. Es müsste als möglich sein, auch für die Auswahl der einzelnen Kontaktdaten, jeder Instanz ein Indize zu verpassen, so wie bei einem Array. Ich habe im Buch "C++ für Spieleprogrammierer" mal was von Listen gelesen. Nur leider weiß ich nicht, wie ich sie in diesem Fall verwenden muss ... Ziel soll es sein, jeden Kontakt (jede Instanz) später einzeln ansteuern zu können.Hier der Kode für die Erstellung der Instanz:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    void NeuerEintrag()
    {
    Adressbuch Kontakt1;
    cout << "Bitte Informationen eingeben." << endl << endl;
    cout << "Nachname  : ";
    cin >> Kontakt1.Nachname;
    cout << "Vorname   : ";
    cin >> Kontakt1.Vorname;
    cout << endl;
    cout << "Strasse   : ";
    cin >> Kontakt1.Strasse;
    cout << "Hausnummer: ";
    cin >> Kontakt1.Hausnummer;
    cout << "PLZ      : ";
    cin >> Kontakt1.Postleitzahl;       
    }


So klappt es nicht:

C-/C++-Quelltext

1
Adressbuch Kontakt1
sondern z.B. so?

C-/C++-Quelltext

1
Adressbuch Kontakt[] = new Adressbuch[i];
Würde mich über schnelle Hilfe freuen!

LG
NukeNoob

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

01.10.2012, 22:29

Als allererstes sollte deine Klasse Adressbuch keine Kontaktdaten, sondern nur die Kontakte speichern.

D.h. du brauchst eine 2. Klasse namens Kontakt.

Dann brauchst du im Adressbuch eine std::list<Kontakt>, die du fleißig mit neuen Kontakten füllst und schon hast du das, was du willst.

Abgesehen davon sehe ich bei dir Membervariablen, die nicht public sein sollten, änder das bitte, selbst Herr Kalista sagt, dass man das, was du da grad machst, nicht machen sollte^^
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

3

01.10.2012, 22:40

Ja, ich weiß. Ein bisschen "private:" und soo :D
Aber hab mich erstmal aufs wesentliche beschränkt ;)
Danke, ich guck mal ob ich so weiter komme!

LG

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

4

02.10.2012, 09:20

Eine Adressenverwaltung habe ich auch schon mal gemacht. Wenn du dir vor der eigentlichen Implementierung mehr Gedanken über dein Datenmodell machst, ersparst du dir später sehr viel Aufwand. Nur so als Tipp am Rande ^^

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

5

02.10.2012, 10:11

Bei deine Aufgabe macht es vielleicht noch nicht sehr viel Sinn, solltest du aber mal mehrere solcher Listen haben (also nicht nur Kontakte) empfiehlt es sich eine eigene Klasse zu schreiben die die Arbeit für deine Listen übernimmt. So hatte ich eine "Listmanager"-Klasse die Funktionalität der Klassen übernommen hat (Ein- und Ausgabe, Speichern und Laden sowie Import und Export von/in andere Datentypen (Excel))

Nur so als Anmerkung von mir ;)

NukeNoob

Frischling

  • »NukeNoob« ist der Autor dieses Themas

Beiträge: 48

Beruf: Student

  • Private Nachricht senden

6

06.10.2012, 15:21

Danke ;)

Werbeanzeige