Ho creato un metodo di classe in una classe che implementa un'interfaccia, ma non riesco a definirlo all'interno dell'interfaccia.Come supportare i metodi di classe nelle definizioni di interfaccia in Delphi
IMyClass = interface
procedure someproc();
class function myfunc() : TMyClass; // compiler doesn't like this!
end;
TMyClass = class(TInterfacedObject, IMyClass)
public
procedure someproc();
class function myfunc() : TMyClass;
end;
voglio myfunc()
per creare e restituire un'istanza di TMyClass
. Per esempio:
somefunc(TMyClass.myfunc(), ...);
crea un'istanza di TMyClass
e passa in somefunc
.
Posso definire function myfunc() : TMyClass;
nell'interfaccia IMyClass, ma se inserisco class
di fronte ad esso, il compilatore mi dà un errore. Se lo lascio, mi dà molti altri errori "E2291 Implementazione mancante del metodo di interfaccia xyz.myfunc" Semplicemente non accetta la stessa firma nell'interfaccia come nella classe.
Ho pensato di aver visto questo lavoro prima (i metodi di classe definiti nelle interfacce) ma forse no.
Se questo non è supportato direttamente, come si fa?
(sto usando Delphi XE5, nel caso in cui conta.)
Implementare il metodo di interfaccia con un metodo di istanza piuttosto che un metodo di classe –
Funziona come un metodo di istanza, ma richiede un'istanza piuttosto rispetto alla classe. –
Esatto. Hai bisogno di un'istanza per implementare un'interfaccia. –