![]() |
Delphi-Version: XE5
Verständnisproblem: overload virtual abstract - vererben
Hi,
ich hab ein Verständnisproblem mit dem vererben von überladenen abstrakten Funktionen. Ich hab auch schon im Forum gesucht; die Themen sind glaub ich ähnlich, aber die Lösungen funktionieren in meinem Fall nicht, bzw. ich verstehe es nicht. Was ich versuche:
Delphi-Quellcode:
Jetzt ableiten wie folgt:
TBasis=class
public Procedure BspProc(ParA : TParameterTypA); overload; virtual; abstract; Procedure BspProc(ParB : TParameterTypB); overload; virtual; abstract;
Delphi-Quellcode:
Dann erhalte ich
TErbe=class(TBasis)
public Procedure BspProc(ParA : TParameterTypA); overload; override; Procedure BspProc(ParB : TParameterTypB); overload; override;
Code:
Doppelklicken schmeißt mich in die Zeilen:
[dcc32 Fehler] ErbeClass.pas(55): E2037 Deklaration von 'BspProc' unterscheidet sich von vorheriger Deklaration
Delphi-Quellcode:
Was ist daran falsch, was muss man korrigieren?
Procedure TErbe.BspProc(ParA : TParameterTypA);
begin end Grüße! |
AW: Verständnisproblem: overload virtual abstract - vererben
Guck nochmal genau ob du die Parameter auch exakt richtig geschrieben hast vom Namen/Typ her.
Ziemlich sicher hast du da in der Klasse etwas anders definiert hast als unten im implementation Teil. Bei mir geht das nämlich ohne Probleme:
Delphi-Quellcode:
type
TParameterTypA = String; TParameterTypB = Integer; TBasis=class public Procedure BspProc(ParA : TParameterTypA); overload; virtual; abstract; Procedure BspProc(ParB : TParameterTypB); overload; virtual; abstract; end; TErbe=class(TBasis) public Procedure BspProc(ParA : TParameterTypA); overload; override; Procedure BspProc(ParB : TParameterTypB); overload; override; end; implementation {$R *.dfm} { TErbe } procedure TErbe.BspProc(ParA: TParameterTypA); begin end; procedure TErbe.BspProc(ParB: TParameterTypB); begin end; |
AW: Verständnisproblem: overload virtual abstract - vererben
Sowas wird gelegentlich auch durch gleichnamige Typen in dem unterschiedlichen Scope der beiden Klassen ausgelöst.
|
AW: Verständnisproblem: overload virtual abstract - vererben
Zitat:
|
AW: Verständnisproblem: overload virtual abstract - vererben
Da wird der Wiener im Hotdog verrückt. Es war alles richtig geschrieben. Das Problem lag daran, dass
Code:
war. Hatte die VCL.Graphics und die Winapi.Windows in der Unit mit dem Erben eingebunden. TBitmap kommt in beiden vor.....aaaargh
TParameterTypA = TBitmap
Dankeschön fürs nachprüfen! |
AW: Verständnisproblem: overload virtual abstract - vererben
Zitat:
|
AW: Verständnisproblem: overload virtual abstract - vererben
Als Erstes Strg+Linksklick auf die Typen oder im Hint zum Typ nachsehen wo das herkommt, wenn einem mal wieder sowas irgendwie nicht ganz koscher vorkommt.
Alternativ hätte natürlich auch sein können, daß man gleichnamige Methoden nicht überladen kann, aber ich war mir recht sicher, daß sowas schon öfters mal gemacht wurde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 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 by Thomas Breitkreuz