Vererbung
-
Hallo,
ich bin noch ein ziemlicher C++ Neuling und hab zu folgendem Code eine Frage. Bis hierhin hab ich das Programm soweit selbst geschrieben. Nun soll die Klasse GelochtePlatte laut Aufgabenstellung um das private Attribut loch vom Typ MetallPlatte** (zur Speicherrung der Informationen über die herausgestanzten Teile, also der Löcher der Platte. Dem Attribut loch wird vom Konstruktor ein Zeiger auf ein Feld von Zeigern auf MetallPlatte-Objekte zugewiesen.) ergänzt werden.
Konstruktor: Er erzeugt ein Feld das n Zeiger auf MetallPlatte-Objekte aufnehmen kann, und weist dem Attribut loch einen Zeiger auf dieses Feld zu.
Kann mir einer verraten was ** beim Attribut MetallPlatte zu bedeuten hat und wie ich die Forderungen so umsetzen kann das sie auch einen Sinn ergeben?
#include <iostream> using namespace std; class MetallPlatte { private: double laenge, breite; public: MetallPlatte (double laenge, double breite) { this->laenge = laenge; this->breite = breite; } double getLaenge() const { return laenge; } double getBreite() const { return breite; } double flaeche() { return laenge * breite; } bool istSchwererAls(MetallPlatte mp) { return flaeche() > mp.flaeche(); } }; class GelochtePlatte : public MetallPlatte { private: int anzahlLoecher; int maxAnzahlLoecher; double lochLaenge; double lochBreite; public: GelochtePlatte(double laengePlatte, double breitePlatte, int maxAnzahlLoecher): MetallPlatte(laengePlatte, breitePlatte) { anzahlLoecher = 0; this->maxAnzahlLoecher = maxAnzahlLoecher; lochBreite = 1/(2*maxAnzahlLoecher) * MetallPlatte::getBreite(); lochLaenge = 1/(2*maxAnzahlLoecher) * MetallPlatte::getLaenge(); } }; int main() { MetallPlatte mp(20,10); //GelochtePlatte gp = lochen(mp, 10, 3); cout << "mp.flaeche() = " << mp.flaeche() << endl; //cout << "gp.flaeche() = " << gp.flaeche() << endl; /*if(gp.istSchwererAls(mp)) cout << "gp ist schwerer als mp." << endl; else if(mp.istSchwererAls(gp)) cout << "mp ist schwerer als gp." << endl; else cout << "mp und gp sind gleich schwer." << endl;*/ char dummy; cin >> dummy; return 0; }
-
btw. dein problem schein nix mit vererbung zu tun zu haben
MetallPlatte** loch = new MetallPlatte* [20];jetzt hast du ein array mit 20 Metallplattenzeigern
jeder Zeiger kann eine Instanz der Klasse Metallplatte aufnehmen
momentan stehen aber noch keine Metallplatten drin deswegen solltest du die Zeiger
aus NULL setzenfor ( int i = 0; i < 20; i++ ) { loch [i] = NULL; }so jetzt könntest du neue Metallplatten Instanzen in den Array einfügen
z.b.loch [5] = new MetallPlatte;funktionen aufrufen
loch [5]->MachWas();und löschen
delete loch [5]; loch [5] = NULL;ganz zum schluss musst du natürlich auch dein zeigerarray wieder löschen
delete [] loch; loch = NULL;