![]() |
Delphi-Version: XE2
Syntax für Operatorenüberladung
Hallo zusammen.
Ich möchte für eine eigene Klasse den = - Operator überladen und eine eigene "Equal"-Methode implementieren. Gemäß der Beschreibung ![]()
Delphi-Quellcode:
Aber ich bekomme für die die operator-Deklaration (auch wenn ich sie unter public setze) als Fehler
TBenutzer = class
class operator Equal(A, B: TBenutzer): Boolean; public Name: String; Surname: String; procedure Clear; end;
Code:
. Kann mir jemand sagen, wo mein Denkfehler ist?
[DCC Fehler] E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet
|
AW: Syntax für Operatorenüberladung
Operatoren kannst du nur bei records überladen, nicht bei klassen
und hier stehts wie es geht: ![]() |
AW: Syntax für Operatorenüberladung
In XE4-5-99 könnte sich das vielleich ändern, wenn Emba wirklich auf die grauenhafte Idee kommt den Ansatz, die Delphi-Klassen in "Interfaces" umzuwandeln, weiterzuentwickeln.
Aktuell spricht aber die nicht automaschite Speicherverwaltung dagegen, daß man sowas mit Klassen machen darf. Dir hätte aber bei allen im Interet auffindbaren Beispielen, Fragethreads und Tutorials auffallen können, daß dort ausschließlich Records verwendet werden :zwinker: Du kannst aber gerne Klassen über Interfaces in einem Record verpacken. (als Beispiel gibt es hier irgendwo eine Math-Bibliothek von mir, wo ich das mal ausprobiert/getestet hatte) Zitat:
|
AW: Syntax für Operatorenüberladung
Zitat:
Delphi-Quellcode:
. Naja, bei Records hilft mir das nur bedingt. Immer diese halben Ansätze ... :(
class
|
AW: Syntax für Operatorenüberladung
Ups, stimmt. :shock:
Ich hatte irgendwie zwei Tabs vom docwiki und dachte ihr hattet das Selbe verlinkt. Man könnte Emba ja mal was zu diesen Beispielen schreiben, aber Dinge, welche über ein Jahr alt sind, werden eh nicht repriert. Wie geagt, aktuell nur für Records. Interfaces gehn leider nicht, da es kein Copy-Event gibt. Ebenso gehen keine Klassen. Und bei Records geht es nur mit statischen Typen (z.B. Integer, Double, Char, Static-Char-Array und String), da hier auch der Copy-Befehl fehlt (weil Emba meinen Wunsch nicht eingebaut hat) |
AW: Syntax für Operatorenüberladung
Soweit ich weiß, entstanden die Operator Überladungen während oder kurz nach der Delphi.NET Zeit. Daher auch class operator, weils in .Net ebend für Klassen geht. Die Syntax ist dann so geblieben.
|
AW: Syntax für Operatorenüberladung
Zitat:
Gehen tut es schon mit allen Records, aber bei referenzierten Daten, ohne Referenzzählung und vorallem ohne Copy-On-Write oder so, wird es Probleme mit der Speicherverwaltung geben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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