AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [Methoden überschreiben] +Parameter +erneut überschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

[Methoden überschreiben] +Parameter +erneut überschreiben

Ein Thema von Martin K · begonnen am 15. Feb 2007 · letzter Beitrag vom 16. Feb 2007
 
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, 03: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz