![]() |
Operator Overloading in einer Klasse?
Aloa!
Wenn D2006 die Möglichkeit nun schon bietet, würde ich doch gerne mal aufs operator overloading zurückgreifen :) Folgendes funktioniert auch:
Delphi-Quellcode:
Allerdings brauche ich keinen record, sondern eine Klasse, und folgendes funktioniert nicht:
TPseudoNumber = record
class operator Add(a: TPseudoNumber; b: Cardinal): TPseudoNumber; end;
Delphi-Quellcode:
Nicht wenn mans so macht, nicht wenn mans in den public Teil steckt, einfach garnie :( Er spuckt immer den Fehler "[Pascal Fehler] BFDefs.pas(67): E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet" aus.
TPSeudoNumber = class
class operator Add(a: TPseudoNumber; b: Cardinal): TPseudoNumber; end; Meine Frage: kann es wirklich sein, dass man das nur in records verwenden kann? Das wäre ja oberst blöde. |
Re: Operator Overloading in einer Klasse?
Hallo Meflin,
die Online-Hilfe hat für deine Frage folgende Antwort: Zitat:
|
Re: Operator Overloading in einer Klasse?
sehr schade :( allerdings stellt sich da mir die frage: sinn, wo bleibst du?
|
Re: Operator Overloading in einer Klasse?
Zitat:
|
Re: Operator Overloading in einer Klasse?
Zitat:
Bei überladenen Operatoren werden neue Objekte angelegt, die "Addition" zweier Objekte ergibt ein neues Objekt. Records sind Werttypen, die auf dem Stack liegen -> wird die Prozedur abgearbeitet, ist der Speicher frei. Bei Delphi.NET gibt es eine GC, also auch wunderbar. Bei Delphi.W32 aber gibt es keine GC, ein Objekt, das durch die Anwendung eines überladenen Operators implizit erzeugt würde, müsste vom Aufrufer freigegeben werden. Und wenn das immer machen würde, würde man das, was man durch Operatorüberladung an Code-Lesbarkeit gewinnt, durch die ständigen Free-Aufrufe wohl mehr als verlieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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 by Thomas Breitkreuz