Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Overload + Reintroduce (https://www.delphipraxis.net/57713-overload-reintroduce.html)

Neutral General 25. Nov 2005 14:07


Overload + Reintroduce
 
Hi,

Ich schreibe gerade eine Klasse.
Ich möchte das diese Klasse diese beiden Constructoren hat:

Delphi-Quellcode:
constructor Create(Hwnd: THandle);
constructor Create(WindowText: String);
Und zwar sollen die Create Methode überladen sein und die Original TObject.Create Methode soll verschwinden.

Delphi-Quellcode:
constructor Create(Hwnd: THandle); reintroduce;
So hab ich den Original Constructor weg aber halt ohne zu überladen.

Delphi-Quellcode:
constructor Create(Hwnd: THandle); reintroduce;
constructor Create(Hwnd: THandle); reintroduce;
geht nicht, weil ich überladen muss und bei

Delphi-Quellcode:
constructor Create(Hwnd: THandle); reintroduce; overload;
constructor Create(Hwnd: THandle); reintroduce; overload;
existiert immernoch die Original Create-Methode -.-
Wie macht man das denn jetzt ?

Meflin 25. Nov 2005 14:12

Re: Overload + Reintroduce
 
Äh... das reintroduce einfach weglassen und overload verwenden :gruebel:


Neutral General 25. Nov 2005 14:13

Re: Overload + Reintroduce
 
Ne dann bleibt die Original Create Methode auch bestehen...

Muetze1 25. Nov 2005 14:17

Re: Overload + Reintroduce
 
ReIntroduce 1x
Overload 2x

Wenn du aber von TObject ableitest, wo die Constructoren noch nicht virtuell sind, dann einfach ohne alles.

Meflin 25. Nov 2005 14:18

Re: Overload + Reintroduce
 
Zitat:

Zitat von Neutral General
Ne dann bleibt die Original Create Methode auch bestehen...

kann sein dass ich das mit override verwechselt habe... schonmal probiert?


Neutral General 25. Nov 2005 14:21

Re: Overload + Reintroduce
 
Zitat:

Zitat von Muetze1
ReIntroduce 1x
Overload 2x

Wenn du aber von TObject ableitest, wo die Constructoren noch nicht virtuell sind, dann einfach ohne alles.

dann kommt das :[Fehler] hwndHandler.pas(15): Die überladene Prozedur 'Create' muss mit der Direktive 'overload' gekennzeichnet sein

Zitat:

Zitat von Meflin
Zitat:

Zitat von Neutral General
Ne dann bleibt die Original Create Methode auch bestehen...

kann sein dass ich das mit override verwechselt habe... schonmal probiert?

Ja: [Fehler] hwndHandler.pas(14): Eine statische Methode kann nicht überschrieben werden

Meflin 25. Nov 2005 14:24

Re: Overload + Reintroduce
 
So ganz komme ich sowieso nicht mit: wieso willst du ZWEI konstruktoren in EINER klasse. wozu soll DAS gut sein :stupid:


Aenogym 25. Nov 2005 14:28

Re: Overload + Reintroduce
 
Zitat:

Zitat von Meflin
So ganz komme ich sowieso nicht mit: wieso willst du ZWEI konstruktoren in EINER klasse. wozu soll DAS gut sein :stupid:

nunja, je nach verwendeted constructor das erstellte objekt eben anders initialisieren. das gibts sogar bei der VCL (wenn ich jetzt nur wüsste, wo...^^)

Neutral General 25. Nov 2005 14:31

Re: Overload + Reintroduce
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
 TWindowHandler= class
 private

 public
  Handle: THandle;
  constructor Create(Hwnd: THandle); // reintroduce; overload; oder was auch immer...
  constructor Create(WindowText: String);// reintroduce; overload; oder was auch immer...
 end;
Naja bei manchen Klassen ist sowas einfach sinnvoll.
Da kann sich der Benutzer/Programmiere aussuchen was er für einen Parameter angibt.
Es gibt so Klassen. Mir fällt jetzt grad keine ein aber es gibt z.B eine Klasse die erwartet als Parameter entweder ein Handle oder irgendwas anderes was ich jetzt nicht weiß. Und ich brauche auch sowas.

Im Anhang noch eine Bild.

Muetze1 25. Nov 2005 14:43

Re: Overload + Reintroduce
 
1. Ohne virtuelle Constructor:

Delphi-Quellcode:
Type
  TObject1 = Class
  Public
    Constructor Create;
    Destructor Destroy; Override;
  End;

  TObject2 = Class(TObject1)
  Public
    Constructor Create(AchWasWeissIch: Integer); Overload;
    Constructor Create(WasAucHImmer: String); Overload;
    Destructor Destroy; Override;
  End;
2. mit virtuellem Constructor

Delphi-Quellcode:
  TObject1 = Class
  Public
    Constructor Create(whatever: TForm); Virtual;
    Destructor Destroy; Override;
  End;

  TObject2 = Class(TObject1)
  Public
    Constructor Create(AchWasWeissIch: Integer); ReIntroduce; Overload;
    Constructor Create(WasAucHImmer: String); ReIntroduce; Overload;
    Destructor Destroy; Override;
  End;
Beides getestet in Delphi - what's the problem?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr.
Seite 1 von 2  1 2      

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