Klasse in anderer Klasse



  • Hallo,
    wenn ich in einer Klasse A im Private Teil eine 2. Klasse/Struktur(Daten in Public) deklariere ist sie dann gleichzeitig ein Element der Klasse A?



  • Ich muss mich korrigieren. Die Daten sind im Private Teil und die Klasse A ist friend.



  • Wie meinst du das?

    Grundsätzlich nein. Es wird kein Objekt erstellt, wenn du keines definierst.



  • Kannst Du die Frage umformulieren / präzisieren? Ich verstehe das so nicht. Was verstehst Du denn unter "Element einer Klasse"? Sind damit nicht normalerweise Datenelemente und Elementfunktionen gemeint?



  • template<class T>
    class A {
       public:
       ...
    
       private:
       class B {
          friend class A<T>
          prvate:
          Methoden mit Parmeter T...
          B *BPtr;
       };
    
    };
    

    Also die Klasse A enthält dann nicht automatisch ein Element der Klasse B, oder?

    Und könnte ich die Klassen in getrennten Dateien implementieren?



  • Nein und ja.



  • Enthält sie nun ein Element? Ja oder Nein. nicht das wir da jetzt mit der doppelten Verneinung durcheinander kommen.

    Und wie würde ich das in getreten Klassen implementieren? Irgendwie bekomme ich das nicht hin.



  • Nein enthält sie nicht.
    Kannst ja z.B mal im Konstruktor der nested class eine Ausgabe machen. Dann siehst du, dass keine erstellt wird. (Warum sollte es auch?)

    Kommt drauf an, was du mit getrennt meinst. Du kannst die Klasse, wie andere auch in einer eigenen .cpp definieren. Ob das viel Sinn macht zu trennen bezweifle ich.



  • Also ich meinte die Klasse A in Datei A.h und B in B.h.



  • Achso. Nein das geht nicht.
    Wie soll das auch gehen? Wenn B in B.h definiert wird, aber in A ist, was in A.h ist, dann kriegst du iwie ein kleines Denkproblem, oder nicht? 😉


Log in to reply