AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Overload und Override für Constructor
Thema durchsuchen
Ansicht
Themen-Optionen

Overload und Override für Constructor

Ein Thema von meierotto · begonnen am 1. Sep 2005 · letzter Beitrag vom 1. Sep 2005
Antwort Antwort
Seite 1 von 3  1 23      
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#1

Overload und Override für Constructor

  Alt 1. Sep 2005, 11:20
Hallo,

ich befürchte, dass meine Frage schon in anderen Themen behandelt wurde,
hab aber in der Masse der Auswahl nichts finden können.

Mein Problem ist, dass ich einen Constructor als Overload sowie Override definieren möchte:

Delphi-Quellcode:
constructor Create(AOwner:TComponent); overload; override;
constructor Create(AOwner:TComponent;B,MB,PIN:String); overload; override;
Dabei wird mir aber die Fehlermeldung "Deklaration von 'Create' unterscheidet sich von vorheriger Deklaration" für die 2. Create-Deklaration angezeigt.
Was tu ich denn falsch machen?

Lass nie die Lösung eines Problems wichtiger werden als die Liebe zu einem Menschen. (Barbara Johnson)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 11:30
Definiere deine B,MB,PIN-Attribute als Properties.

Für TComponent-Nachfahren sollte man keine überladenen Konstruktoren definieren, da damit die Verwendung der Komponente in der IDE nicht mehr sinnvoll möglich ist, da hier nur der "default" Konstruktor mit einem Übergabeparameter verwendet wird.

Also verwende Properties und definiert dir ein Active-Property oder eine Connect-Methode.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 11:31
Die erste Version von Create, die du überladen willst, hatte natürlich kein "overload".

Warum nennst du den zweiten Konstruktor nicht einfach anders, z.B. CreateWithParams, dann brauchst du kein Overload.

//EDIT: wo war die rote Box?
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 11:47
Danke ,

eure Tipps haben mich auf die Lösung gebracht. Natürlich ist nur eines der beiden Creates als override zu definieren, nämlich die dem Parent-Constructor gleiche Prozedur. Den zweiten Constructor habe ich als overload und virtual definiert - und schon klappts.

Bis zur nächsten Frage
Lass nie die Lösung eines Problems wichtiger werden als die Liebe zu einem Menschen. (Barbara Johnson)
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#5

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 11:53
Warum überhaupt override bei Konstruktoren? Die sind doch gar nicht virtuell, macht ja auch keinen Sinn, virtuelle Konstruktoren zu haben
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 12:04
Zitat von tommie-lie:
Warum überhaupt override bei Konstruktoren? Die sind doch gar nicht virtuell, macht ja auch keinen Sinn, virtuelle Konstruktoren zu haben
Stimmt auch wieder - gar nicht dran gedacht 8)
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 12:24
Haeh? Ab spaetestens TComponent ist Create virtuell.
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 12:33
oder wenn man von einer eigenen klasse ableitet, die den constructor virtuell gemacht hat.

edit: könnte man beim 2. Create nicht auch statt override; einfach reintroduce; benutzen?
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 12:45
Zitat von Robert Marquardt:
Haeh? Ab spaetestens TComponent ist Create virtuell.
Auch richtig - heute ist echt nicht mein Tag 8)

Aber nochmal: was soll der ganze Rhabarber? Ein Konstruktor muss nicht Create heißen - gib dem Kind einfach einen anderen Namen, das macht außerdem den Code lesbarer.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Overload und Override für Constructor

  Alt 1. Sep 2005, 12:52
Zitat von Flocke:
Aber nochmal: was soll der ganze Rhabarber? Ein Konstruktor muss nicht Create heißen - gib dem Kind einfach einen anderen Namen, das macht außerdem den Code lesbarer.
Sorry, aber ich _hasse_ Konstruktoren, die _nicht_ Create heißen.
Delphis *piep* Unsitte, Konstruktoren wie class functions aussehen zu lassen wird damit noch verschlimmert.
Bis jetzt kann man im Code bei einer "class function" namens Create wenigstens noch davon ausgehen, dass sie eigentlich ein Constructor ist. Mit deinem Vorschlag würde das in einem Chaos untergehen.
Warum müssen Konstrutoren/Destruktoren überhaupt einen Namen haben?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:54 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