![]() |
Überladene Funktion wird nicht erkannt
Hallo!
Folgender Code schlägt mit dem Compiler-Error "[DCC Error] Task.dpr(46): E2250 There is no overloaded version of 'CreateTask' that can be called with these arguments" fehl:
Delphi-Quellcode:
Eigentlich wollte ich mir die Zeile mit "T := TTestTask.Create;" sparen und eine neue Funktion einführen.
program Task;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; type ITask = interface ['{45C4232F-EA00-4096-88F9-6DD78AD0CB0C}'] end; TAdapterTask = class(TInterfacedObject, ITask) end; TTask = class(TAdapterTask) end; TTaskDelegate = reference to procedure(const ATask: ITask); TTestTask = class(TTask) end; Threading = class public class function CreateTask(const ATask: ITask): ITask; overload; class function CreateTask(const ATask: TTaskDelegate): ITask; overload; end; class function Threading.CreateTask(const ATask: ITask): ITask; begin end; class function Threading.CreateTask(const ATask: TTaskDelegate): ITask; begin end; var T: ITask; begin // T := TTestTask.Create; Threading.CreateTask(TTestTask.Create); end. Kommentiere ich die 2. Funktion "CreateTask(const ATask: TTaskDelegate)" aus, funktioniert es wie erwartet. Gibt es einen Workaround, um das ganze Problem zu umgehen? |
AW: Überladene Funktion wird nicht erkannt
Delphi-Quellcode:
Threading.CreateTask(TTestTask.Create as ITask);
P.S.: Anonyme Methoden basieren intern ebenfalls auf TInterfacedObject und werden deshalb als Interface behandelt. Deshalb muß in Deinem Fall der Compiler etwas unterstützt werden, indem ihm gesagt wird, welches Interface und damit welche Methode gemeint ist. |
AW: Überladene Funktion wird nicht erkannt
Zitat:
Wenn nicht, dann müsste die Fehlermeldung "E2251: Ambiguous overloaded call to '%s'..." kommen. Trotzdem danke! |
AW: Überladene Funktion wird nicht erkannt
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 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