COM技术纵横谈(2)
二:什么是接口
前面已经提到过,COM组件与客户大家打交道的唯一办法是通过接口。在C++的实现中,我们一般用抽象基类来定义接口,然后利用C++类的多重继承实现该组件。下面给出一个简单的示意:
////////////////
// iface.h
////////////////
#ifndef IFACE_H
#define IFACE_H 1
#define interface class
interface IA
{
public:
virtual func1() = 0;
virtual func2() = 0;
};
interface IB
{
public:
virtual func3() = 0;
virtual func4() = 0;
};
#endif
//////--iface.h end--//////
////////////////
// test.c
////////////////
#include "iface.h"
class Ca : public IA, IB
{
public:
Ca(int i) : m_Count(i) {}
virtual func1() { cout << "IA::func1 is " << m_Count * 1 << endl; } virtual func2() { cout << "IA::func2 is " << m_Count * 2 << endl; } virtual func3() { cout << "IB::func3 is " << m_Count * 3 << endl; } virtual func4() { cout << "IB::func4 is " << m_Count * 4 << endl; } int m_Count; }; main() { IA* pIa; IB* pIb; Ca* pCa="new" Ca(2); pIa="pCa;" pIa> func1();
pIa -> func2();
pIb -> func3();
pIb -> func4();
delete pCa;
}
//////--test.c end--//////