Zusammenspiel von Klassen

Dieses Thema im Forum "C/C++" wurde erstellt von rdg, 02.09.2007.

  1. #1 rdg, 02.09.2007
    Zuletzt bearbeitet: 02.09.2007
    rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    Hi,
    da ich meine c++ Kentnisse mal wieder ein wenig aufpolieren will, brauche ich mal wieder Eure hilfe(merkwürdig wenn's nicht so wär ;)).
    Ich habe eine Klasse Termin:

    und eine Klasse Datum

    nun möchte ich dass beim Aufruf von Termin der Konstuktor auch ein Datumsobjekt erstellt und dieses dem Terminobjekt fest hinzufügt.
    Kann mir jemand bitte sagen wie das genau geht? :think:
    Bekomme den Fehler:
    Termin.cpp: In constructor ‘Termin::Termin(char*, char*, Datum)’:
    Termin.cpp:4: error: no matching function for call to ‘Datum::Datum()’
    Datum.h:8: note: candidates are: Datum::Datum(int, int, int)
    Datum.h:4: note: Datum::Datum(const Datum&)

    Wäre sehr, sehr dankar mal wieder darüber!!! :))

    gruß
    rdg :)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Stollentroll, 02.09.2007
    Stollentroll

    Stollentroll Schattenparasit

    Dabei seit:
    11.03.2006
    Beiträge:
    67
    Zustimmungen:
    0
    Kann es sein, dass da ein Include in der Termin.cpp fehlt?
     
  4. rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    Leider nicht,
    aber stimmt, ich werd nochmal den kompletten jetzt aktuellen Qcode hinzufügen.

    main.cpp
    Datum.h
    Datum.cpp
    Termin.h
    Termin.cpp
    Ich glaube das liegt an der Parameterübergabe, weil ich nicht weiss wann mann einen Zeiger, die Adresse oder die Klasse übergeben muss.
    Auch wann man den Operator new verwendet weiss ich nicht.
    :( :(

    Das ist alles sehr verwirrend. ?(
     
  5. Psyjo

    Psyjo Routinier

    Dabei seit:
    15.11.2005
    Beiträge:
    259
    Zustimmungen:
    0
    Ort:
    Hinter'm Berg
    Code:
    class Termin : Datum
    Damit ist Termin auch ein Datum.

    Code:
    class Termin : private Datum
    Ist das selbe wie oben, nur dass hier ausschließlich Termin auf Datum zugreifen kann.

    Code:
    class Termin : protected Datum
    Alle weiteren abgeleiteten Objekte können auf Datum zugreifen.

    Gruß
    Psyjo
     
  6. rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    Aber Termin soll doch nicht eine Unterklasse von Datum sein,
    sondern Termin soll ein spezifisches Objekt von Datum haben. :think:

    Denke ich hier falsch?! :(
    Wenn ja warum?
     
  7. #6 Stollentroll, 02.09.2007
    Stollentroll

    Stollentroll Schattenparasit

    Dabei seit:
    11.03.2006
    Beiträge:
    67
    Zustimmungen:
    0
    Okay, was mir auffällt:

    1) In der Termin.h fehlt in dem Konstruktor mit dem Datumszeiger ein Bezeichner.

    2) Dieser Konstruktor erwartet einen Zeiger (nämlich Datum*), du übergibst aber in der main ein Objekt vom Typ Datum, nicht einen Zeiger auf ein Datum.

    Also müsstest du entweder in der main aus dem
    Code:
    Datum(1,1,2000)
    ein
    Code:
    new Datum(1,1,2000)
    machen, oder den Konstruktor so verändern, dass ein Datum und kein Zeiger erwartet wird, also den * entfernen.
     
  8. #7 rdg, 02.09.2007
    Zuletzt bearbeitet: 02.09.2007
    rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    erstmal vielen dank!
    hatte leider nicht richtig funktioniert. :O

    aber glaube ich hab es jetzt.
    Ich erstelle in Termin ein Datum d für den es keinen geeignetten Konstruktor gibt.


    <- Habs jetzt geschafft, vielen dank für eure hilfe !!!
    durch den Tipp new von Stollentroll bin ich drauf gekommen, nur weiß ich leider nicht richtig wie ich es anwenden kann.
     
  9. #8 Stollentroll, 02.09.2007
    Stollentroll

    Stollentroll Schattenparasit

    Dabei seit:
    11.03.2006
    Beiträge:
    67
    Zustimmungen:
    0
    Was genau meinst du denn?

    Möchtest du wissen, wie new funktioniert?
     
  10. #9 rdg, 02.09.2007
    Zuletzt bearbeitet: 02.09.2007
    rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    Also:
    (vorweg: in den Zeiten dazwischen habe ich mich auch mit ungarischer Noation versucht.
    Was haltet Ihr davon :)))


    ich habe einen Datum:: Datum() geschrieben
    dann:
    und den Termin Konstruktor umgeschrieben:
    so kann ich jetzt ein Terminobjekt mit:
    Termin b("a","b",1,1,2000);
    erstellen

    Doch finde ich diese Lösung nicht besonders schön, besser wäre es,
    wenn :
    Termin b("a","b",new Datum(1,1,2000));
    und so erst beim Termin Konstruktor das DatumsObjekt d erstellt wird,
    da es so viel sauberer ist und auch nicht so fehleranfällig.

    doch:
    hindern mich daran. Und ich weiss nicht, wie ich es Lösen kann.
     
  11. #10 Stollentroll, 02.09.2007
    Zuletzt bearbeitet: 02.09.2007
    Stollentroll

    Stollentroll Schattenparasit

    Dabei seit:
    11.03.2006
    Beiträge:
    67
    Zustimmungen:
    0
    Ändere Termin ab:

    Code:
    class Termin{
    Datum *d;
    Termin(char* tmp_Betreff, char* tmp_Text, Datum* apc_d);
    }
    Entsprechend in der cpp:

    Code:
    Termin::Termin(char* tmp_pchBetreff, char* tmp_pchText, Datum *apc_d){
    m_pchBetreff = tmp_pchBetreff;
    m_pchText = tmp_pchText;
    d = apc_d;
    }
    Dann solltest du diesen
    Code:
    Termin b("a","b",new Datum(1,1,2000));
    Aufruf nutzen zu können.

    Allerdings müsstest du jetzt noch einen Destruktor für Termin bauen, damit d beim Zerstören des Termins auch gelöscht wird.
     
  12. #11 rdg, 02.09.2007
    Zuletzt bearbeitet: 02.09.2007
    rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    Cool !!!
    erstmal vielen dank es läuft durch. 8)

    Destruktor-> habs gelöst

    PS.: Was hälts du eigentlich von meiner ungarischen Notation hab ich es richtig gemacht, oder meine Variablen falsch deklarier? :brav:
     
  13. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  14. #12 Stollentroll, 02.09.2007
    Stollentroll

    Stollentroll Schattenparasit

    Dabei seit:
    11.03.2006
    Beiträge:
    67
    Zustimmungen:
    0
    Ich behaupte mal, richtig oder falsch gibt es nicht wirklich bei der ungarischen Notation.

    Solange du das eh nur für dich machst, ist es egal, wenn du irgendwo arbeitest, solltest du dich den Standards dort anpassen...

    Wichtig ist eigentlich nur, dass das ganze konsistent ist.
     
  15. #13 rdg, 02.09.2007
    Zuletzt bearbeitet: 02.09.2007
    rdg

    rdg ???

    Dabei seit:
    12.10.2006
    Beiträge:
    357
    Zustimmungen:
    0
    Ort:
    Berlin
    De Destruktor ist mir wieder weggesprungen:
    -> funktioniert wieder

    Aber abgesehen davon nochmals vielen dank hast mir sehr gehlofen !!!
    UN <- hast recht, selber muss es einem gefallen.
     
Thema:

Zusammenspiel von Klassen

Die Seite wird geladen...

Zusammenspiel von Klassen - Ähnliche Themen

  1. Zusammenspiel v. Xserver und Desktopenvironments/Windowmanager

    Zusammenspiel v. Xserver und Desktopenvironments/Windowmanager: Und zwar habe ich da ein grundlegendes Verständnisproblem, da ich viele isolierte Dokumentationen zum Xserver, zu Desktopenvironments wie Gnome...
  2. Ansprechen einerPointervarible von einer Klassen

    Ansprechen einerPointervarible von einer Klassen: Hi, ich habe mal wieder ein paar Verständnissproblem bei c++, wo ich hoffe das Ihr mir dabei helfen könnt. Zum einen habe ich eine Klasse Klasse{...
  3. (mein) awk kennt keine Zeichenklassen?!?

    (mein) awk kennt keine Zeichenklassen?!?: Hi, ich hab hier ein Problem, welches ich nicht so recht verstehe. Hab hier ein VmWare Ubuntu Etchy Server (Testsystem) laufen und ansich macht...
  4. dynamische klassen /statische klassen

    dynamische klassen /statische klassen: // stellt cout bereit # include <iostream.h> class Haus { public: double Gf; double Hk; int At; public: Haus () { cout...
  5. CPP Pointer Templates auf Klassen

    CPP Pointer Templates auf Klassen: Hallo zusammen Ich habe eine OpenGL Initialisierungsklasse gebastelt. Dazu kommen jetzt noch ein paar Klassen für Primitives (z.B. Quader)...