![]() |
Operatoren in Turbo Delphi (Win32) überladen?
Hi,
kann ich in Turbo Delphi für Win32 Operatoren überladen? In der Hilfe steht "Ja", der Compiler meckert trotzdem. Danke und Gruß, Lucas |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Das geht - jedoch wie auch im BDS2006 nur bei Records (!). Bei welchem Code meckert denn der Compiler?
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Ja, das geht. Nur ohne Code kann ich dir mangels Kristallkugel nicht helfen. ;)
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Na und was sollen wir dir jetzt dazu sagen können? Mit dem was du uns an Infos gabst: Ja, es geht.
Aber das hilft dir nicht wirklich weiter, rightig? :mrgreen: Probieren wir es also am Besten gleich nochmal von vorne und du zeigst uns wie du es versucht hast und was der Compiler dazu gesagt hat. ;) Zitat:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Nur bei Records? Sorry, aber ich bin gar nicht auf die Idee gekommen, dass jemand bei Records Operatoren überladen wollen würde und daher dachte ich, dass meine (allgemein technische) Frage auch ohne Code, der als einfaches Beispiel eher trivial ist, eindeutig wäre. Nun gut, in der Hilfe steht zunächst nur etwas von Records, in dem unteren Beispiel werden aber auch Klassen genannt :gruebel:.
Ich habe natürlich versucht, die Operatoren einer Klasse zu überladen - daher funktionierte es wohl nicht. Wieso klappt das denn nur bei Records? Gibt es Hoffnung, dass sich das mit der nächsten Version endlich ändert? |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
Andererseits musste ich fesstellen dass records ggü. Klassen praktisch keinen Nachteil haben - die können ja auch private & public Teile haben, das einzige was nicht geht ist eben Vererbung (und destructoren, aber auf die kann man ja sch***** ;) ) |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Wie würde man das denn überhaupt bei Klassen idealerweise anstellen?
Gehen wir davon aus, ich habe drei Variablen vom Typ TMeineTolleKlasse und habe für diese Klasse die Addition definiert.
Delphi-Quellcode:
Der überladene Operator würde also eine neue Instanz erzeugen und sie zurückliefern. In meinem Beispiel wäre sie dann an C gebunden. Was mache ich - ohne Garbage-Collector, wenn C vorher schon eine Instanz der Klasse an sich gebunden hatte? Habe ich dann nicht ein Speicher-Löchlein?
procedure foo;
var a, b, c : TMeineTolleKlasse; begin a:= TMeineTolleKlasse.Create; b:= TMeineTolleKlasse.Create; c:= a + b; a.Free; b.Free; c.Free; end; |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Bei Datentypen würde sich ein Record anbieten, der besitzt unter Win32 class operators(!) Klassen nicht (!)
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Jaja, soweit waren wir ja schon. ;-) Nur wie regeln das andere Sprachen bei Klassen? Diese Einschränkung schien ja eine größere Bestürzung hervorzurufen.
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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-2025 by Thomas Breitkreuz