一个最简单的com组件的例子(C++)

博客给出一个最简单的COM组件例子,定义纯抽象基类Ix、Iy作为组件接口,组件CA继承这两个接口实现多接口。客户端展示了对组件多接口的调用,还指出在C++中COM组件的三个关键:接口由纯抽象基类实现、可提供多接口、可用多继承实现多接口组件。
部署运行你感兴趣的模型镜像

一个最简单的com组件的例子:)

定义了两个纯抽象基类Ix,Iy来做为组件的接口,然后定义组件CA来继承这两个接口,做为CA的多接口实现,然后在一个客户端显示了对此组件多接口的调用。

#include<iostream.h>
#include<objbase.h>

void trace1(const char* pMsg){cout<<pMsg<<endl;}

//first interface;
interface Ix
{
 virtual void _stdcall Fx1()=0;
 virtual void _stdcall Fx2()=0;
};

//second interface
interface Iy
{
 virtual void _stdcall Fy1()=0;
 virtual void _stdcall Fy2()=0;
};

//component
class CA: public Ix,public Iy
{
public:
 virtual void _stdcall Fx1()
 {
  cout<<"Fx1"<<endl;
 }
 virtual void _stdcall Fx2()
 {
  cout<<"Fx2"<<endl;
 }

 virtual void _stdcall Fy1()
 {
  cout<<"Fy1"<<endl;
 }
 virtual void _stdcall Fy2()
 {
  cout<<"Fy2"<<endl;
 }
};
 

//client main program
void main()
{
 trace1("client:");
 //创建组件的实例
 CA *pa=new CA;
 pa->Fx1();

 trace1("Client: use Ix interface");
 //创建接口的指针
 Ix *pIx=pa;
 pIx->Fx1();
 pIx->Fx2();

 trace1("Client: use Iy interface");
 Iy *pIy=pa;
 pIy->Fy1();
 pIy->Fy2();

 trace1("client: delete the component");
 delete pa;
}

在目前C++中,com组件有三个关键之处:

(1)COM接口是由C++中的纯抽象基类来实现的。

(2)COM组件可以提供多个接口。

(3)一个C++类可以利用多继承来实现一个可以提供多个接口的组件。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值