AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Verständnisproblem: overload virtual abstract - vererben
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisproblem: overload virtual abstract - vererben

Ein Thema von Photoner · begonnen am 16. Jun 2014 · letzter Beitrag vom 16. Jun 2014
Antwort Antwort
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 17:04
Delphi-Version: XE5
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:
TBasis=class
 public
  Procedure BspProc(ParA : TParameterTypA); overload; virtual; abstract;
  Procedure BspProc(ParB : TParameterTypB); overload; virtual; abstract;
Jetzt ableiten wie folgt:

Delphi-Quellcode:
TErbe=class(TBasis)
 public
  Procedure BspProc(ParA : TParameterTypA); overload; override;
  Procedure BspProc(ParB : TParameterTypB); overload; override;
Dann erhalte ich

Code:
[dcc32 Fehler] ErbeClass.pas(55): E2037 Deklaration von 'BspProc' unterscheidet sich von vorheriger Deklaration
Doppelklicken schmeißt mich in die Zeilen:

Delphi-Quellcode:
Procedure TErbe.BspProc(ParA : TParameterTypA);
begin

end
Was ist daran falsch, was muss man korrigieren?

Grüße!
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 17:17
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;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 17:19
Sowas wird gelegentlich auch durch gleichnamige Typen in dem unterschiedlichen Scope der beiden Klassen ausgelöst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 17:21
Sowas wird gelegentlich auch durch gleichnamige Typen in dem unterschiedlichen Scope der beiden Klassen ausgelöst.
Wo sind die Typen deklariert? Ich vermute mal in beiden Units; dann sind sie für den Compiler 2 verschiedene Typen, welche zufällig gleich heißen.
Markus Kinzler
  Mit Zitat antworten Zitat
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 17:36
Da wird der Wiener im Hotdog verrückt. Es war alles richtig geschrieben. Das Problem lag daran, dass
Code:
TParameterTypA = TBitmap
war. Hatte die VCL.Graphics und die Winapi.Windows in der Unit mit dem Erben eingebunden. TBitmap kommt in beiden vor.....aaaargh

Dankeschön fürs nachprüfen!
Chris

Geändert von Photoner (16. Jun 2014 um 17:39 Uhr)
  Mit Zitat antworten Zitat
Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 17:37
Sowas wird gelegentlich auch durch gleichnamige Typen in dem unterschiedlichen Scope der beiden Klassen ausgelöst.
Korrekt
Chris
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

AW: Verständnisproblem: overload virtual abstract - vererben

  Alt 16. Jun 2014, 18:42
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz