Einzelnen Beitrag anzeigen

Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

[Methoden überschreiben] +Parameter +erneut überschreiben

  Alt 15. Feb 2007, 04:42
Moin,

ich habe folgendes Problem:
1. ich leite von einer Klasse ab, nennen wir die abgeleitete Klasse mal Tclass1
2. ich will eine Methode (den Konstruktor) überschrieben, aber mit zusätzlichen Parametern
dazu verwende ich normalerweise die Direktive reintroduce
3. nun wird von Tclass1 erneut abgeleitet: Tclass2
4. in Tclass2 soll der Konstruktor wieder überschrieben werden (aber mit den selben Parametern wie in Tclass1)
dazu verwende ich normalerweise override, allerdings klappt das nicht mehr:
Zitat:
E2170 Eine nichtvirtuelle Methode kann nicht überschrieben werden
Okay, muss also ein virtual hinter den Konstruktor von Tclass1.
virtual klappt allerdings nicht zusammen mit reintroduce, also muss reintroduce wieder weg.
Steht also nur virtual dahinter, es kommt zur Warnmeldung:
Zitat:
W1010 Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TCustomControl'
Hier nochmal als Code:
Delphi-Quellcode:
type
  Tclass1 = class(TCustomControl)
  public
    constructor Create(AOwner: TComponent; Test: String); reintroduce;
  end;

  Tclass2 = class(Tclass1)
  public
    constructor Create(AOwner: TComponent; Test: String); override; // <-- klappt nicht!
  end;
Delphi-Quellcode:
type
  Tclass1 = class(TCustomControl)
  public
    constructor Create(AOwner: TComponent; Test: String); virtual; // <-- Warnmeldung
  end;

  Tclass2 = class(Tclass1)
  public
    constructor Create(AOwner: TComponent; Test: String); override;
  end;
Meine Frage:
Was müsste richtiger Weise hinter dem Konstruktor für eine Direktive stehen?
Oder soll ich die Warnmeldung einfach ignorieren?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat