怎么声明一个Interface
如何声明一个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++没有接口
用纯虚基类
[解决办法]嗯,C++可以多重继承
[解决办法]
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派生。