arabirim tanımlarında sınıf yöntemleri nasıl desteklenir Bir arabirimi uygulayan bir sınıfta bir sınıf yöntemi oluşturdum, ancak arabirimin içinde tanımlayamıyorum. 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;
oluşturmak ve
TMyClass
bir örneğini dönmek
myfunc()
istiyorum. Örneğin:
somefunc(TMyClass.myfunc(), ...);
TMyClass
bir örneğini oluşturur ve somefunc
içine geçer.
Ben IMyClass arayüzünde function myfunc() : TMyClass;
tanımlayabilirsiniz, ama bunun önüne class
koyarsanız, derleyici bana bir hata verir. Eğer onu bırakırsam, bana başka hatalar verir "E2291 Arayüz metodu xyz.myfunc uygulamasının eksik uygulanması" Sadece sınıfta olduğu gibi arayüzde aynı imzayı kabul etmiyor.
Bu çalışmayı daha önce görmüştüm (arayüzlerde tanımlanan sınıf yöntemleri) ama belki de değil.
Bu doğrudan desteklenmiyorsa, bunu nasıl yapıyorsunuz?
(Ben konularda durumda, Delphi XE5 kullanıyorum.)
bir örnek yöntemi yerine Bu örnek yöntemi olarak çalışır –
sınıf yöntemi ile arabirim yöntemi uygulamak, fakat bir örnek daha ziyade gerektirir sınıftan daha –
Doğru. Bir arayüz uygulamak için bir örneğe ihtiyacınız var. –