首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么声明一个Interface

2013-07-08 
如何声明一个Interface?我用其他语言(Delphi)写了一个DLL并导出了一个Interface的实现ITest interfacepr

如何声明一个Interface?
我用其他语言(Delphi)写了一个DLL并导出了一个Interface的实现

ITest = interface
    procedure SetInt(Value: Integer);
    function GetInt(Value: Integer): Integer;
  end;


我想在C++中声明这样的接口应该如何写?网上查了下好像不支持interface关键字……
[解决办法]
C++没有接口
用纯虚基类
[解决办法]
引用:
Quote: 引用:

C++没有接口
用纯虚基类


就是说我得修改interface为虚类,方便C++调用,是这样吗?


嗯,C++可以多重继承
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

C++没有接口
用纯虚基类


就是说我得修改interface为虚类,方便C++调用,是这样吗?


嗯,C++可以多重继承


谢谢,我有个疑问,就是由于是跨语言的,会不会各自的编译器对类的实现有所不同
如果采用这样虚类的办法替代接口,是否可靠?


用VC肯定没问题,因为采用这种虚拟表结构可以很容易地实现和调用COM对象,比较一下C和C++实现和调用COM对象的代码就会知道,如果C++虚函数的实现变化之后,实现和调用COM会是多么头痛的一件事情。Delphi的接口类型来自于COM,是为了让Delphi能很方便地使用和编写COM对象,而MS肯定不会让他的VC不能方便地实现COM,所以VC的虚函数实现方式一定不会发生变化。
[解决办法]
同时要注间,Delphi中的interfece天生就是从IUnknown派生——无论你在声明时有没有注明,所以在C++中写抽象类时不要忘了把IUnknown的三个函数加进去——或者也让C++类从IUnknown派生。

热点排行