AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Overload mit gleichen Parametern

Ein Thema von fLaSh11 · begonnen am 3. Aug 2007 · letzter Beitrag vom 6. Aug 2007
Antwort Antwort
fLaSh11
(Gast)

n/a Beiträge
 
#1

Overload mit gleichen Parametern

  Alt 3. Aug 2007, 22:27
Hallo Dpler,

//Suche erfolglos benutzt

ich hab früher schon überladene Funktionen benutzt, da haben diese sich aber durch die Parameter unterschieden. Jetzt tun sie das nicht, sondern durch den Rückgabetypen. Bei dsdt.info lese ich das:
Zitat von dsdt.info:
Überladene Methoden müssen sich deshalb entweder in der Anzahl der Parameter oder in den Typen dieser Parameter signifikant unterscheiden.
Also ist folglich so etwas nicht möglich?
Delphi-Quellcode:
function assign(index: byte): TTechLevel; overload;
function assign(index: byte): TSize; overload;
Delphi meckert halt, dass die Funktion "assign" nochmals deklariert wird.

MfG
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Overload mit gleichen Parametern

  Alt 3. Aug 2007, 22:35
Hi,

Es ist nicht möglich.

Warum fragst du üpberhaupt, wenn du es schon selbst herausgefunden hast?

Sowas würde aber gehen:

Delphi-Quellcode:
procedure assign(index: byte; out Result: TTechLevel); overload;
procedure assign(index: byte; out Result: TSize); overload;
Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: Overload mit gleichen Parametern

  Alt 3. Aug 2007, 22:37
Ich stecke zwar nicht ganz so tief in den Delphi-Innereien, aber ich schätze, das Problem ist hier, dass der Compiler nicht auflösen kann, welche Version einer Funktion benötigt wird. In C++ ist eine nicht ganz unübliche Lösung für dieses Problem, Template-Parameter einzusetzen, aber ansonsten könntest du auch einfach einen anderen Namen für die Funktion vorsehen oder die im roten Kasten von FAlter vorgeschlagene Methode der Ausgabeparameter verwenden. So aus (Bibliotheks-)Konsumentensicht würde ich sagen, dass das beides eine sehr viel intuitivere Anwendung der Funktion(en) ermöglicht als überladene Rückgabewerte.

Einer der Gründe für dieses Problem (und auch dafür, dass z.B. C++-String-Klassen meistens keinen impliziten Cast von und nach PChar mitbringen) ist der, dass viele Typen auf verschiedene Weisen ineinander überführbar sind und der Compiler Mehrdeutigkeiten auflösen muss. Und Compiler können dabei furchtbar kreativ werden, was eine unangenehme Fehlerquelle darstellt und daher an einigen Stellen (wie den Rückgabewerten) von vornherein durch das Sprachdesign vermieden wird.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#4

Re: Overload mit gleichen Parametern

  Alt 3. Aug 2007, 22:38
Danke, ich war grad so vertieft, dass ich nciht an den var-/out-Parameter gedacht hab
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Overload mit gleichen Parametern

  Alt 6. Aug 2007, 09:28
Zitat von fLaSh11:
Also ist folglich so etwas nicht möglich?
Delphi-Quellcode:
function assign(index: byte): TTechLevel; overload;
function assign(index: byte): TSize; overload;
Nur so am Rande erwähnt:
Ich würde von einer Funktion assign erwarten, dass sie mir irgendetwas hinzufügt oder zusammenfügt.
Da würde sich ein Returnwert von True/False anbieten (erfolgreich oder nicht).

Warum soll assign ein TTechLevel oder ein TSize zurückgeben?
Erstelle besser zwei getrennte Funktionen GetTechLevel und GetSize dafür.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 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