RAHUL
16-11-2005, 14:01
Hallo,
Ich lerne gerade ein wenig C++ als Programmieranfänger aus diesem teilweise guten, teilweise schlechten Buch "C++ in 21 Tagen" von Jesse Liberty(ältere Ausgabe von 99).
Ich bin jetzt gerade bei Abstrakten Datentypen. Erst habe ich Bsp 13.7 mit
4 Klassen(cShape, cCircle, cRectangle, cSquare) erstellt und kompiliert. Hat auch geklappt.
In dem Beispiel ist cShape so deklariert:
class cShape
{
public:
cShape() {}
virtual ~cShape () {}
virtual long GetArea() const {return -1;}
virtual long GetPerim() const {return -1;}
virtual void Draw() {}
protected:
};
In Bsp. 13.8 soll die drei Methoden aber durch ADTs ersetzt werden. Aber sonst bleibe der ganze Code derselbe.
class cShape
{
public:
cShape() {}
virtual ~cShape () {}
virtual long GetArea() = 0;
virtual long GetPerim() = 0;
virtual void Draw() = 0;
private:
};
Ich bekomme dann aber den Fehler vom Compiler:
Listing_13_08.cpp:106: Fehler: es kann kein Objekt des Typs »cCircle« belegt wer den
Listing_13_08.cpp:106: Fehler: denn die folgenden virtuellen Funktionen sind a bstrakt:
Listing_13_08.cpp:14: Fehler: virtual long int cShape::GetArea()
Listing_13_08.cpp:15: Fehler: virtual long int cShape::GetPerim()
,
genauso für cRectangle und cSquare.
Muss man da noch etwas beachten, habe ich etwas übersehen oder ist irgendetwas
neu hinzugekommen, was es zu berücksichtigen gilt??
Danke
Ich lerne gerade ein wenig C++ als Programmieranfänger aus diesem teilweise guten, teilweise schlechten Buch "C++ in 21 Tagen" von Jesse Liberty(ältere Ausgabe von 99).
Ich bin jetzt gerade bei Abstrakten Datentypen. Erst habe ich Bsp 13.7 mit
4 Klassen(cShape, cCircle, cRectangle, cSquare) erstellt und kompiliert. Hat auch geklappt.
In dem Beispiel ist cShape so deklariert:
class cShape
{
public:
cShape() {}
virtual ~cShape () {}
virtual long GetArea() const {return -1;}
virtual long GetPerim() const {return -1;}
virtual void Draw() {}
protected:
};
In Bsp. 13.8 soll die drei Methoden aber durch ADTs ersetzt werden. Aber sonst bleibe der ganze Code derselbe.
class cShape
{
public:
cShape() {}
virtual ~cShape () {}
virtual long GetArea() = 0;
virtual long GetPerim() = 0;
virtual void Draw() = 0;
private:
};
Ich bekomme dann aber den Fehler vom Compiler:
Listing_13_08.cpp:106: Fehler: es kann kein Objekt des Typs »cCircle« belegt wer den
Listing_13_08.cpp:106: Fehler: denn die folgenden virtuellen Funktionen sind a bstrakt:
Listing_13_08.cpp:14: Fehler: virtual long int cShape::GetArea()
Listing_13_08.cpp:15: Fehler: virtual long int cShape::GetPerim()
,
genauso für cRectangle und cSquare.
Muss man da noch etwas beachten, habe ich etwas übersehen oder ist irgendetwas
neu hinzugekommen, was es zu berücksichtigen gilt??
Danke