Abstrakte Klassen: Problem solved :)



  • Problem solved 🙂

    /*
     * Reifenhandel.cpp
     *
     *  Created on: 06.02.2010
     *      Author: c.groupe
     */
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    class Artikel
    {
    public:
    	char Namen[16+1];  		// +1 Nullzeichen '\0'
    	double Einkaufspreis;
    	long Anzahl;
    
    	virtual double Verkaufspreis() =0;
    };
    
    enum MaterialTyp { Stahl =1, Alu };
    
    class Felge : public Artikel
    {
    public:
    	MaterialTyp Material;
    	virtual double Verkaufspreis();
    };
    
    class Reifen : public Artikel
    {
    public:
    	char Dimension[8+1]; 	// +1 Nullzeichen '\0'
    	virtual double Verkaufspreis();
    };
    
    class Rad : public Artikel
    {
    public:
    	virtual double Verkaufspreis();
    
    private:
    	Felge felge;
    	Reifen reifen;
    };
    
    double Felge::Verkaufspreis()
    {
    	return Einkaufspreis * 1.5;
    }
    double Reifen::Verkaufspreis()
    {
        return Einkaufspreis * 1.3;
    }
    double Rad::Verkaufspreis()
    {
    	return ( felge.Verkaufspreis()+reifen.Verkaufspreis() )*0.9;
    }
    
    int main()
    {
    
        Artikel* artikel[3];
        artikel[0] = new Felge();
        artikel[1] = new Reifen();
        artikel[2] = new Rad();
    
        const string art [ ] = {"Felge", "Reifen", "Rad" };
    
        for (int i = 0; i < 3 ; i++)
        {
          cout << "Verkaufspreis von " << art[i] << ": " << artikel[i]->Verkaufspreis() << endl;
          delete artikel[i];
        }
    
        return 0;
    }
    


  • Was geht denn nicht?



  • Da sind Rechtschreibfehler drin.



  • wx++ schrieb:

    Was geht denn nicht?

    ..\src\Reifenhandel.cpp:39: error: cannot declare field `Rad::reifen' to be of type `Reifen'
    ..\src\Reifenhandel.cpp:39: error: because the following virtual functions are abstract:
    ..\src\Reifenhandel.cpp:19: error: virtual double Artikel::Verkaufspreis()
    ..\src\Reifenhandel.cpp:53: error: no `double Reifen::Verkaufspreis()' member function declared in class `Reifen'
    ..\src\Reifenhandel.cpp:57: error: no `double Rad::Verkaufspreis()' member function declared in class `Rad'
    ..\src\Reifenhandel.cpp: In function int main()': ..\\src\\Reifenhandel.cpp:66: error: cannot allocate an object of typeReifen'
    ..\src\Reifenhandel.cpp:66: error: since type Reifen' has abstract virtual functions ..\\src\\Reifenhandel.cpp:67: error: cannot allocate an object of typeRad'
    ..\src\Reifenhandel.cpp:67: error: because the following virtual functions are abstract:
    ..\src\Reifenhandel.cpp:19: error: virtual double Artikel::Verkaufspreis()



  • Zeus schrieb:

    Da sind Rechtschreibfehler drin.

    omg, sry


Anmelden zum Antworten