OldSchoolHack

Registrieren / Anmelden Deutsch

c++ Vererbung/Methoden überschreiben


icon c++ Vererbung/Methoden überschreiben #1

Anmeldungsdatum: Sep 2010

Beiträge: 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

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

199 positiv
33 negativ
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

Anmeldungsdatum: Sep 2010

Beiträge: 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