इसका कारण क्या संकलित नहीं होगा?जब कोई वर्ग एक वंशज इंटरफ़ेस लागू करता है, तो यह स्वचालित रूप से आधार इंटरफ़ेस को लागू करने के रूप में क्यों नहीं गिना जाता है?
type
IInterfaceA = interface ['{44F93616-0161-4912-9D63-3E8AA140CA0D}']
procedure DoA;
end;
IInterfaceB = interface(IInterfaceA) ['{80CB6D35-E12F-462A-AAA9-E7C0F6FE0982}']
procedure DoB;
end;
TImplementsAB = class(TSingletonImplementation, IInterfaceB)
procedure DoA;
procedure DoB;
end;
var
ImplementsAB: TImplementsAB;
InterfaceA: IInterfaceA;
InterfaceB: IInterfaceB;
begin
ImplementsAB := TImplementsAB.Create;
InterfaceA := ImplementsAB; >> incompatible types
...
end
इसके विपरीत यह कैसे मैं यह काम कर रहा है:
InterfaceA := ImplementsAB as InterfaceB;
या
InterfaceA := InterfaceB;
मेरा मतलब, अगर IInterfaceB IInterfaceA से विरासत और TImplementsAB IInterfaceB लागू करता है, यह नहीं होगा IInterfaceA को लागू करने के लिए तार्किक और संगत प्रकार टाइप करें?
+1 मुझे कारण पता नहीं था, धन्यवाद! मेरे द्वारा –
+1 भी। –
प्रारंभिक ओएलई/COM "बग" क्या है? –