继承自VCL的类,只能单继承。要实现多个父类继承,可以实现接口interface。IInterface是特殊接口,成员函数是纯虚函数。通常是为了实现COM组件。将声明和实现分离。
interface a :public IInterface
{
int n;
virtual void setName(int value)=0;
virtual int getName()=0;
__property int NameStr ={ read=getName ,write=setName};
};
typedef DelphiInterface<a> _di_a;
class b:public TInterfacedObject,public a
{
public:
int fName;
void setName(int value)
{
fName = value;
}
int getName()
{
return fName;
}
virtual HRESULT STDMETHODCALLTYPE QueryInterface(
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject)
{ return TInterfacedObject::QueryInterface(riid, ppvObject); };
virtual ULONG STDMETHODCALLTYPE AddRef( void)
{ return TInterfacedObject::_AddRef(); };
virtual ULONG STDMETHODCALLTYPE Release( void)
{ return TInterfacedObject::_Release(); };
};
void __fastcall TForm1::Button3Click(TObject *Sender)
{
_di_a test = new b;
test->NameStr = 120;
ShowMessage(test->NameStr);
test = NULL;
}