में इंटरफ़ेस परिभाषाओं में कक्षा विधियों का समर्थन कैसे करें मैंने एक कक्षा में एक क्लास विधि बनाई है जो एक इंटरफ़ेस लागू करता है, लेकिन मैं इसे इंटरफ़ेस के अंदर परिभाषित नहीं कर सकता।डेल्फी
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;
मैं बना सकते हैं और TMyClass
का एक उदाहरण वापस जाने के लिए myfunc()
चाहते हैं। उदाहरण के लिए:
somefunc(TMyClass.myfunc(), ...);
TMyClass
का एक उदाहरण बनाता है और somefunc
में गुजरता है।
मैं IM12Class इंटरफ़ेस में function myfunc() : TMyClass;
परिभाषित कर सकता हूं, लेकिन अगर मैं इसके सामने class
डालता हूं, तो संकलक मुझे एक त्रुटि देता है। अगर मैं इसे छोड़ देता हूं, तो यह मुझे कई अन्य त्रुटियों देता है "ई 22 9 1 इंटरफ़ेस विधि xyz.myfunc का कार्यान्वयन गुम है" यह कक्षा में इंटरफ़ेस में समान हस्ताक्षर स्वीकार नहीं करता है।
मैंने सोचा कि मैंने पहले यह काम देखा है (इंटरफेस में परिभाषित कक्षा विधियों) लेकिन शायद नहीं।
यदि यह सीधे समर्थित नहीं है, तो आप इसे कैसे करते हैं?
(मैं डेल्फी XE5 उपयोग कर रहा हूँ, इस मामले में यह मायने रखती है।)
एक वर्ग विधि –
यह एक उदाहरण विधि के रूप में काम करता है एक उदाहरण विधि के बजाय साथ इंटरफेस विधि को लागू करें, लेकिन यह एक उदाहरण नहीं बल्कि आवश्यकता है कक्षा से –
यह सही है। इंटरफेस को लागू करने के लिए आपको एक उदाहरण की आवश्यकता है। –