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 🙄


Anmelden zum Antworten