zulunda Geschrieben 13. Dezember 2004 Teilen Geschrieben 13. Dezember 2004 Hallo ich habe folgende aufgabe und komme eigentlich mit allem klar ausser mit der methode dynamic_size. kann von euch jemand mir einen tipp geben. Vielen dank für eure hilfe grüsse zulunda //Sie sollen drei Klassen schreiben: Eine Basisklasse basisklasse0085 und davon abgeleitet die beiden Klassen a1klasse0085 und a2klasse0085. Zusammen mit dem Prüfprogramm haben Sie also 7 Dateien abzugeben: Das Testprogramm und jeweils einen .h und eine .cpp-Datei pro Klasse. Die Basisklasse basisklasse0085 selbst hat zwei Attribute Name Type Anzahl att01 string eins att02 double eins Die Klasse hat einen Konstruktor, mit dem alle Attribute gesetzt werden können. Die Attribute sind privat. Die Klasse basisklasse0085 ist abstrakt wegen der Methode: string formel1() const; Die Methode wird in den abgeleiteten Klassen a1klasse0085 und a2klasse0085 implementiert. Die Methode liefert Strings unterschiedlicher Länge und mit unterschiedlichem Inhalt. Klasse Ergebnis von formel1 a1klasse0085 1 mal das Zeichen 'j' a2klasse0085 6 mal das Zeichen 'e' Außerdem gibt es eine Methode dynamic_size, mit der die Größe eines Objekts erfragt werden kann. Zu Erinnerung: Ein Objekt kann mit sizeof nach der Anzahl seiner Bytes gefragt werden. Wenn Sie in einer Methode sind, heißt das Objekt selbst *this. Der Operator sizeof ist aber NIE virtuell, darum die Methode dynamic_size, die nur diesen Operator auf *this anwendet. Die Klasse a1klasse0085 ist abgeleitet von der Klasse basisklasse0085. Für jedes Objekt der Klasse a1klasse0085 haben die Attribute die folgenden Werte: Attribute Wert att01 "AA2as" att02 -300 Die abgeleitete Klasse a1klasse0085 selbst hat zusätzlich folgende Attribute: Name Type Anzahl att11 char eins att12 string eins att13 double eins att14 char eins att15 string viele Die Klasse a2klasse0085 ist abgeleitet von der Klasse basisklasse0085. Für jedes Objekt der Klasse a2klasse0085 haben die Attribute die folgenden Werte: Attribute Wert att01 "zz456d" att02 200 Die abgeleitete Klasse a2klasse0085 selbst hat zusätzlich folgende Attribute: Name Type Anzahl att21 int eins Jede der drei Klassen hat eine Klassenvariable anzahl, mit der die Anzahl der aktuell lebendigen Objekte gezählt wird. Zum Beispiel gibt a2klasse0085::anzahl die Anzahl der lebendigen Objekte vom Typ a2klasse0085 an. Alle Variablen haben zu Beginn des Hauptprogramms den Wert 0. Da alle erzeugen Objekte auch gelöscht werden, sollte am Schluss wieder die Anzahl 0 herauskommen. Ein Objekt vom Typ a1klasse0085 ist im "Nebenberuf" auch ein Objekt vom Typ basisklasse0085. Mit anderen Worten: Wenn Sie ein einziges a1klasse0085 haben, dann sind beide Anzahlen 1: basisklasse0085::anzahl und a1klasse0085::anzahl Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 13. Dezember 2004 Teilen Geschrieben 13. Dezember 2004 Wo ist denn konkret das Problem? Das hier: Außerdem gibt es eine Methode dynamic_size, mit der die Größe eines Objekts erfragt werden kann. Zu Erinnerung: Ein Objekt kann mit sizeof nach der Anzahl seiner Bytes gefragt werden. Wenn Sie in einer Methode sind, heißt das Objekt selbst *this. Der Operator sizeof ist aber NIE virtuell, darum die Methode dynamic_size, die nur diesen Operator auf *this anwendet. ist doch recht deutlich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zulunda Geschrieben 14. Dezember 2004 Autor Teilen Geschrieben 14. Dezember 2004 problem ist sicherlich recht deutlich. aber ich habe keine ahnung wie ich es umsetzen muss. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 Dann machen wir doch mal Einzelteile draus: Der Name ist vorgegeben: dynamic_size Welcher Rückgabetyp? Für welche Klasse(n) muss sie implementiert werden? Welcher Inhalt? Virtuell, ja oder nein? Was kannst du beantworten? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zulunda Geschrieben 16. Dezember 2004 Autor Teilen Geschrieben 16. Dezember 2004 kann es auch auf diese art irgendwie funktionieren. wir sollen nämlich *this verwenden. und danach soll folgendes funktionieren: teste(a1klasse0085::anzahl == 1); void basisklasse0085::dynamic_size()const {return sizeof();} int basisklasse0085::anzahl()const{return dynamic_size(*this);} Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. Dezember 2004 Teilen Geschrieben 16. Dezember 2004 und danach soll folgendes funktionieren: teste(a1klasse0085::anzahl == 1);Das hat aber mit der Methode dynamic_size nichts zu tun. void basisklasse0085::dynamic_size()const {return sizeof();}Die Funktion soll doch die Größe zurückgeben. Also darf sie nicht void sein. sizeof ist ein Operator. Er braucht also einen Operanden. Welcher das ist, steht schon im Text. Du hast es selbst schon geschrieben. int basisklasse0085::anzahl()const{return dynamic_size(*this);}Anzahl soll eine int-Variable (Attribut) sein, keine Methode. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.