freakontour
Grünschnabel
Hallo zusammen,
ich habe die Klasse GeoFigur, die die Variablen x und y protected darstellt. Die Funktionen drucke() und flaeche() werden public als virtuelle Funktion definiert.
Nun habe ich die Klasse Punkt die die GeoFigur ableitet und die Klassen nutzt. Von der Klasse Punkt soll nun der Kreis abgeleitet werden.
Genau das funktioniert bei mir nicht.
Ich verstehe nicht warum ich die Klasse falsch ableite.
ich habe die Klasse GeoFigur, die die Variablen x und y protected darstellt. Die Funktionen drucke() und flaeche() werden public als virtuelle Funktion definiert.
Nun habe ich die Klasse Punkt die die GeoFigur ableitet und die Klassen nutzt. Von der Klasse Punkt soll nun der Kreis abgeleitet werden.
Genau das funktioniert bei mir nicht.
Ich verstehe nicht warum ich die Klasse falsch ableite.
C++:
#include <iostream>
#ifndef M_PI
#define M_PI 3.14159265358979323846f
#endif
using namespace std;
class GeoFigur {
protected:
int y = 0;
int x = 0;
public:
virtual void drucke() = 0;
virtual float flaeche() = 0;
virtual ~GeoFigur() {};
};
class Punkt :public GeoFigur {
public:
Punkt(int i, int j) { x = i; y = j; }
private:
virtual float flaeche() { return 0; };
virtual ~Punkt() {};
void drucke()
{
cout << "Punkt:\nP(" << x << "," << y << ") \nund Fläche = 0" << endl;
}
};
class Kreis : public Punkt{
private:
float z;
float flaeche();
void drucke() {
cout << "Kreis\n" << "mit P(" << x << "," << y << ",Radius= " << z << "\nund Fläche= " << flaeche() << endl;
}
public:
Kreis(int i, int j, float k) { x = i; y = j; z = k; }
};
float Kreis::flaeche() {
return (M_PI * z * z);
}
int main() {
GeoFigur* gf = new Punkt(3, 3);
gf->drucke();
gf = new Kreis(-1, -1, 4.5f);
gf->drucke();
delete gf;
}