class in class initialisieren



  • hubs da haben sich ein paar Y in X verwandelt.

    naja das ist die Vorgabe ob das jetzt sinn macht oder nicht ... sie darf nicht angefasst werden...

    in meiner Klasse X soll jedenfalls genau das ein Member sein:
    Y& bla_;

    class X
    {
    private:
    Y& bla_;
    char* _text;
    public: 
    X();
    X(Y& bla);
    X(Y& bla, const char* text);
    void setText(const char* text);
    const char * getText() const {return _text;}
    }
    

    der "text" gehört natürlich Dyn. verwaltet, darum möchte ich im Constructor wenigstens ein "" drauf tun...



  • Weiters habe ich noch ein porblem:

    class Z
    {
    public: 
      bool add(const X& meinX);
    };
    
    class X
    {
    private:
      Y& bla_;
      char* _text;
      Z* _meinZ;
    public: 
      X();
      X(Y& bla);
      X(Y& bla, const char* text);
      void setText(const char* text);
      const char * getText() const {return _text;}
    }
    

    ich würde bei Z ein include für X brauchen und bei X ein include für Z.
    Was aber natürlich nicht funktioniert.



  • ich würde bei Z ein include für X brauchen und bei X ein include für Z.

    Du würdest bei keinem ein include für keins brauchen, da du in der Klassendefinition von Z nur eine Referenz von X brauchst, reicht eine Deklaration von X, also einfach noch class X; vor die Klassendefinition schreiben.

    In der Klassendefinition von X brauchst du auch nur einen Zeiger auf Z, weswegen wieder eine Deklaration von Z reicht (class Z;).

    In den Implementierungsdateinen musst du dann natürlich inkludieren, weil du wahrscheinlich auf Member der jeweils anderen Klasse zugreifen möchtest, aber wenn du include guards verwendest, ist das kein Problem mehr.

    Aber was ist das eigentlich für eine Aufgabe? Die Klassen sind hochgradig sinnlos und auch der Code ist seltsam. Was soll z.B. hier die variable Argumentenliste:

    void Y::print1(const char* a, ...) const
    

    Hat der Lehrer/Dozent euch nichts dazu gesagt? Was sollt ihr anhand dieser Übung lernen?



  • Bruder Lustig schrieb:

    Was sollt ihr anhand dieser Übung lernen?

    Wie man Code nicht schreiben sollte. 🤡

    Edit: Ja ist nicht grad das beste Kommentar. Aber mir fehlen da echt die Worte. Einen Standard-Konstruktor aber eine Referenz auf ein externes Objekt...

    Derjenige der sich das ausgedacht hat gehört gelyncht...

    Arme Studenten/Schüler..



  • DANKE! 🙂 🙂 🙂

    Naja ich hab jetzt doch schon ein paar Jahre mit C# und Java zu
    tun gehabt und eigentlich fühle ich mit in der oop recht wohl...
    Aber diese Übung 😕

    Das ganze sieht für mich so aus als hätte hier irgendwer ein Programm geschrieben,
    dann einige Seiten rausgelöscht und die Aufgabe ist jetzt, dass wieder herzustellen.(es sind nur mehr dieses Y und die Main vorhanden von 7 Klassen und natürlich diese "Tipps" welche Methoden und Attribute drin sind)

    Natürlich darf der Code der noch hier steht nicht verändert werden und es dürfen auch keine Klassen oder Methoden dazuerfunden werden.
    Wär ja noch okay, wenn irgendwo stehen würde was das Prgogramm gemacht hat ...
    aber diese Codeüberbleibsel sind ja auch nur ein Teil eines größeren Programms ...

    naja is mal was neues 🙂



  • Dann zeig doch mal die main, evtl. brauchst du ja gar keinen Standardkonstruktor.



  • ist eh nicht dabei ...
    aber es steht das er zu machen ist...



  • diego2k schrieb:

    Naja ich hab jetzt doch schon ein paar Jahre mit C# und Java zu
    tun gehabt und eigentlich fühle ich mit in der oop recht wohl...
    Aber diese Übung 😕

    Du unterschätzt die Unterschiede zwischen C++ und C#/Java. (Ja echt!)



  • Du unterschätzt die Unterschiede zwischen C++ und C#/Java. (Ja echt!)

    ist mir irgendwie auch aufgefallen 🤡


Anmelden zum Antworten