Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Probleme mit overload
ASMFreak - Fr 09.07.10 08:46
Titel: Probleme mit overload
Moin,
im Rahmen der Unit TShellChangeNotifyEx, die ich upgeloadet habe (falls jemand den Quelltext sehen möchte!), habe ich versucht, ein paar Methoden per overload zu überschreiben (die Funktionen GetRegisteredChangeNotifyObjects und UnRegisterChangeNotifyObject).
Bei einigen in der Klasse gelang mir das (StopWatching, GetShellChangeEvent, UnregisterRequestorObjects), bei einigen (s.o.) nicht! Der Compiler hat dann beim Aufruf der jeweils zweiten überladenen Methode die Meldung ausgegeben, dass es "keine überladene Funktion gibt, die mit diesen Argumenten aufgerfuen werden kann".
Das kann aber nciht stimmen, denn benennt man diese Funktion einfach um (indem man einen Buchstaben anhängt) und entfernt das overload, meckert der Compiler nicht mehr, die Argument-Liste stimmt also. (Und nur zur Beruhigung: Die Argumente unterscheiden sich genügend, damit der Compiler die richtige Version zuordnen kann. Daran liegt's also auch nicht.)
Verrückt macht mich, dass das bei einigen Methoden funktioniert und bei anderen nicht und ich nicht weiß, woran das liegt und daher in welchen Fällen das künftig ebenfalls Probleme geben kann.
Weiß jemand Rat?
Danke und Gruß, Trutz
Moderiert von
Christian S.: Topic aus Open Source Units verschoben am Fr 09.07.2010 um 09:03
mkinzler - Fr 09.07.10 09:19
Sind den die zu überladenen Methoden virtuell?
ASMFreak - Fr 09.07.10 09:28
Egal, finktioniert in beiden Fällen nicht!
platzwart - Fr 09.07.10 10:12
Bitte zeig uns die Deklaration beider Funktionen.
ASMFreak - Fr 09.07.10 10:22
Zum Beispiel
Delphi-Quelltext
1: 2:
| procedure GetRegisteredChangeNotifyObjects(ARequestorHandle: PInteger; out ANotifyObjectList: TShChNotifyItems); procedure GetRegisteredChangeNotifyObjects(const AControl: TControl; const AMsgID: Cardinal; ACallBack: TSHChangeCallBack; out ANotifyObjectList: TShChNotifyItems); |
Funktionieren tut's bei
Delphi-Quelltext
1: 2:
| function StopWatching: Boolean; overload; function StopWatching(ARequestorHandle: PInteger): Boolean; overload; |
ASMFreak - Fr 09.07.10 15:14
Nachdem in den letzten fünf Stunden so furchtbar viele Antworten gekommen sind, dass ich nicht alle auswerten kann, gehe ich davon aus, dass Ihr auch nicht klüger seid als ich und hake die Frage als unerledigt ab! :bawling:
Danke trotzdem an alle, die's zumindest versucht haben.
Gruß, Trutz
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!