OldSchoolHack

Register / Login English

c++ Vererbung/Methoden überschreiben


icon c++ Vererbung/Methoden überschreiben #1

Join Date: Sep 2010

Posts: 38

Hi, ich programmiere gerade eine GUI Controll Klasse.
Ich habe eine Basisklasse, welche alle Eigenschaften eines GUI Kontrolls beinhaltet: name, x,y.
Außerdem definiere ich eine Funktion Draw().
Diese Methode/Funktion Draw soll später in einer Unterklasse definiert werden, aber noch nicht in der guicontroll Klasse:
Pseudo
TEXT Code:
  1.  
  2. class guicontroll{
  3. int x,y;
  4. void draw()
  5. }
Nun erbt eine Unterklasse:
TEXT Code:
  1.  
  2. class guibutton{
  3. void draw { /.../};
  4. }
  5.  
und eine weitere
TEXT Code:
  1.  
  2. class guicheckbox{
  3. void draw { /.../};
  4. }
  5.  
erst hier wird die eigentliche draw Methode erstellt.
Angenommen ich habe ein Liste von guicontroll Objekten, einige davon sind guibuttons, andere guicheckboxen.
Ich möchte die Liste durchlaufen und für jedes Objekt die drawmethode callen, diese soll dann an die Unterklasse geleitet werden, sodass das Controll richtig gezeichnet wird.

Uff langer Text, ich weiß nicht, wie ich das richtig beschreiben soll =$$.
Ich hoffe ihr versteht mein Problem und könnt mir helfen,
lg Alex

icon #2

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
das Stichwort heißt "virtual"

CPP Code:
  1. class Base
  2. {
  3. public:
  4. virtual void foo() = 0; //= 0 heißt, dass die Methode in der Klasse nicht implementiert wird, sondern nur in den folgenden
  5. };
  6.  
  7. class Derive : public Base
  8. {
  9. public:
  10. virtual void foo()
  11. {
  12. //
  13. }
  14. };
  15.  
  16. Base *b = new Derive();
  17. b->foo(); //ruft Derive::foo() auf
  18. delete b;

greetz KN4CK3R

__________________

Hallo
icon #3

Join Date: Sep 2010

Posts: 38

Cool danke, hatte noch ein Paar Probleme mit meiner list, aber habs jetzt hinbekommen,
tausend dank

http://s1.directupload.net/images/120906/rzdgskxi.png