Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi operator überladen (https://www.delphipraxis.net/134145-operator-ueberladen.html)

vsilverlord 16. Mai 2009 15:46


operator überladen
 
hallo freunde der sonne, ich möchte den operator + überladen. dummerweise kennt mein compiler den class operator add nicht. hier der quelltext:
Delphi-Quellcode:
unit uvektor;

interface

uses types,math;
type
 tvektor=packed record
 x,y,z:extended;
class operator add(const a,b:tvektor):tvektor;

end;

implementation

   class operator add(const a,b:tvektor):tvektor;
   begin
   result.x:=a.x+b.x;
   result.y:=a.y+b.y;
   result.z:=a.z+b.z;
   end;
wo liegt der fehler?

hoika 16. Mai 2009 15:53

Re: operator überladen
 
Hallo,

wie der name class schon sagt.
Mache eine Klasse aus deinem Record.


Heiko

vsilverlord 16. Mai 2009 16:05

Re: operator überladen
 
nanu, ich dachte mit klassen funktioniert es nicht? außerdem war in dem tutorial (die erste Seite bei der Suche nach begriff 'Operatoren überladen) auch ein record, der überladen wurde!

Meflin 16. Mai 2009 16:08

Re: operator überladen
 
Zitat:

Zitat von vsilverlord
nanu, ich dachte mit klassen funktioniert es nicht? außerdem war in dem tutorial (die erste Seite bei der Suche nach begriff 'Operatoren überladen) auch ein record, der überladen wurde!

Operatorüberladung mit records geht in Delphi nur mit Delphi.Net und Prism. Unter Delphi W32 funktioniert Operator Overloading nur mit Klassen.

himitsu 16. Mai 2009 16:16

Re: operator überladen
 
Operatoren gehen in Delphi32 nur mir Records

Zitat:

wo liegt der fehler?
du nutzt auch grad dein D2009?
dann sollte der Compiler dieses eigentlich auch kennen :gruebel:

einige Themen dazu: Hier im Forum suchenclass operator

notfalls könnte man auch da mal reingucken: Hier im Forum suchenMiniMathLib

vsilverlord 16. Mai 2009 16:21

Re: operator überladen
 
der compiler sagt: undeklarierter bezeichner 'result',
was ja total abstrus ist, schließlich agiert der class operator ja als funktion. =(
also unter record statt packed record kommt der gleich fehler, daran liegt es nicht =(

himitsu 16. Mai 2009 16:26

Re: operator überladen
 
vesuch es mal so (falls das nicht nur ein Tippfehler im Forum ist, obwohl ich mich dann wundern würde, warum dann er erst beim Result meckert)
Code:
class operator [b]tvektor.[/b]add(const a, b: tvektor): tvektor;
begin
  result.x:=a.x+b.x;
  result.y:=a.y+b.y;
  result.z:=a.z+b.z;
end;

vsilverlord 16. Mai 2009 16:31

Re: operator überladen
 
vielen dank, das war der fehler!

Codewalker 11. Jul 2009 14:28

Re: operator überladen
 
Kann man auch auf diesem Wege Operatoren von Enums überladen, um sich eine zusätzliche BlaToString-Funktion zu sparen? Habs bisher nicht hinbekommen.

Edit: Rechtschreibung korrigiert. Ich brauch eindeutig Kaffee :vernupft:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr.

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