Klasse -Elektro- mit Fehlern "HIIILLFE"
-
basis.h
class basis { public: basis(); ~basis(); void setCPUSpeed(int _speed); private: int CPUspeed; };basis.cpp
#include "basis.h" basis::basis() { } basis::~basis() { } void basis::setCPUSpeed(int _speed) { CPUspeed = _speed; }computer.h
#include "basis.h" class computer : public basis { public: computer(); ~computer(); void setDVDSpeed(int _speed); private: int DVDspeed; };computer.cpp
#include "computer.h" computer::computer() { } computer::~computer() { } void computer::setDVDSpeed(int _speed) { DVDspeed = _speed; }anwendung.cpp
#include "computer.h" int main(int argc, char* argv[]) { // geht basis* basisZeiger = new basis(); basisZeiger->setCPUSpeed(1000); basisZeiger = new computer(); // geht nicht, weil basisZeiger vom Typ basis ist und die Methode setDVDSpeed() nicht kennt!!! // // basisZeiger->setDVDSpeed(48); // geht, weil wir den Zeiger von basis-Objekten auf computer-Objekte gecastet haben static_cast<computer*>(basisZeiger)->setDVDSpeed(48); return 0; }Dynamic Casts sind wohl besser, aber das hab ich jetzt auf die Schnelle nicht realisiert. Kann ja mal jemand so abändern.
-
Wie oft möchtest Du es eigentlich noch erklärt bekommen?
Basis *p = new PC; // So machst Du's: p->setCD(cd); // geht nicht weil p ein Basis* ist, und die Klasse Basis kein setCD kennt // So muss es (wenn überhaupt, denn dynamic_casts sind vermeidbar): dymanic_cast<PC*>(p)->setCD(cd); // geht, weil man dem Compiler sagt "ich bin mir aber sicher, einen PC zu haben"EDIT: Lahm
