Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

warum keine Assoziation auf die eigenen Klasse möglich?

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte ein Assoziation auf die eigene Klasse machen (in UML "gesprochen").

Das sieht dann so aus:


class Person {

  private:

    AnsiString nachname;

    AnsiString vorname;

    Person mutter; //hier meckert der Compiler!!! 

    Person vater; //...und hier auch

  public:

    Person(AnsiString nn, AnsiString vn);

    void setMutter(Person mutter);

    void setVater(Person vater);

    Person getMutter();

    Person getVater();

    AnsiString toString();

} ;[/code]

Warum geht das nicht?

Bearbeitet von cppAmdMe

Warum geht das nicht?
Weil die Mutter auch Mutter und Vater hat, und der Vater auch, und deren Eltern auch und deren Eltern auch und deren Eltern auch und deren Eltern auch und deren Eltern auch und deren Eltern auch und deren Eltern auch und deren Eltern auch...

Du siehst das Problem? Deine Klasse enthält sich unendlich oft selbst. In Java, wo Klassenmember erst mal nur leere Verweise sind, würde das so gehen, aber in C++ nicht. Da müsstest du Zeiger verwenden, damit diese Rekursion auch mal irgendwann abbrechen kann.

Na logisch, jetzt geht mir ein Licht auf! Der Konstruktor der Mutter ruft sich selbst auf!!! Da hätte ich auch selbst drauf kommen können/müssen. Ich benutze in der Regel ja selbst nur Zeiger, aber in diesem Fall wollte ich mal didaktisch reduzieren. Die Rekursion ist übrigens gewollt, nämlich bei der toString-Methode :D

Das sieht man wieder mal, dass C++ eben doch mächtiger ist als Java :-)

1000 Dank

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.