Zum Inhalt springen

hilfe bei c++ programm (sizeof)


zulunda

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...