C++如何声明一个Interface
我用其他语言(Delphi)写了一个DLL并导出了一个Interface的实现
Delphi/Pascal code?ITest = interface procedure SetInt(Value: Integer); function GetInt(Value: Integer): Integer; end;
我想在C++中声明这样的接口应该如何写?网上查了下好像不支持interface关键字
C++没有接口
用纯虚基类 用VC肯定没问题,因为采用这种虚拟表结构可以很容易地实现和调用COM对象,比较一下C和C++实现和调用COM对象的代码就会知道,如果C++虚函数的实现变化之后,实现和调用COM会是多么头痛的一件事情。Delphi的接口类型来自于COM,是为了让Delphi能很方便地使用和编写COM对象,而MS肯定不会让他的VC不能方便地实现COM,所以VC的虚函数实现方式一定不会发生变化。
同时要注间,Delphi中的interfece天生就是从IUnknown派生——无论你在声明时有没有注明,所以在C++中写抽象类时不要忘了把IUnknown的三个函数加进去——或者也让C++类从IUnknown派生。