![]() |
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:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Da gibt es bereits einen QC:
![]() Wer Operatoren in Klassen will, der sollte da seine Stimme abgeben und Voten. |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
Sicher ist es mehr als ein zweischneidiges Schwert wenn es um Ref Types in D32 geht. Aber die Entscheidung sollte IMHO dem Programmierer überlassen werden, nicht dem Compiler. ;) |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
:mrgreen: |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Gibt es denn überhaupt Sprachen, die Operatorüberladung bei Referenztypen zulassen, ohne eine GC zu besitzen? Das würde doch den Vorteil der Operatorüberladung, nämlich intuitivere Lesbarkeit, mehr als kaputtmachen durch die ganzen Destruktoraufrufe. Oder alternativ Speicher fressen noch und nöcher :mrgreen:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
mir ist auch noch unklar wie das ganze bei klassen funktionieren soll. Dann müsste man ja wirklich beim überladen des Operators alle Properties und Variablen der Klasse neu setzen.
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Schaut euch mal das Video #2 von Daniel an. Da dürften keine Fragen übrig bleiben.
![]() Das ist zwar anhand von Records erklärt, für Klassen wäre das aber auch eine feine Sache. In C++ geht's ja auch! |
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
|
Re: Operatoren in Turbo Delphi (Win32) überladen?
Zitat:
In diesem Fall kannst Du ja hier voten: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 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