我有一个COM组件叫 IALL,其中有3个子对象分别为IA、IB、IC,IA为基对象,当我创建IALL时,使用如下语句:
CoCreateInstance(&CLSID_IALL, 0, CLSCTX_ALL,&IID_IALL,(void**)&all);
我的问题是这里获得的all指针是不是等同于IA中(基对象)虚表的指针?
CoCreateInstance(&CLSID_IALL, 0, CLSCTX_ALL,&IID_IALL,(void**)&all);
我的问题是这里获得的all指针是不是等同于IA中(基对象)虚表的指针?
那我是不是可以直接用all->Add() ?
{
virtual int Add()=0;
...
};
struct ISub: public: IUnknown//接口声明
{
virtual int Sub()=0;
...
};
CArithmetric
{
//外围类内容提要
.....
//-------------------
class XAdd public:IAdd//嵌套类,实现接口
{
int Add();//对Add函数进行实现,Add直接访问外围类CArithmetric的数据成员计算和
};
public XAdd m_xAdd;//接口对象
class XSub public:ISub//嵌套类,实现接口
{
int Sub();//对Add函数进行实现,Add直接访问外围类CArithmetric的数据成员计算和
};
public XSub m_xSub;//接口对象
};CoCreateInstance(...,(void**)pIAdd)返回的就是指向m_xAdd的指针,void**就是指向IAdd了
&pIAdd指向基类IAdd,void**就也是就指向基类了