高手请进,有关IInterface接口

afterchen 2007-01-21 01:13:19
现在需要把一段Delphi代码改写成C++,
Delphi代码 :
type
TSocketDispatcherThread = class(TServerClientThread, ISendDataBlock)
private
FRefCount: Integer;
.
.
.
end;

C++代码(由编译Delphi代码自动生成):
class TSocketDispatcherThread : public TServerClientThread
{
private:
int FRefCount;
.
.
.
private:
void *__ISendDataBlock;
public:
operator ISendDataBlock*(void) { return (ISendDataBlock*)&__ISendDataBlock; }
};

对此接口的处理不是很明白(C++中为什么不是继承此接口),希望高手解答。如果C++类这样声明的话,在CPP里应该如何处理此接口?是否可通过GetInterface函数来取得ISendDataBlock接口指针?多谢了,分不够可再加。
...全文
199 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
afterchen 2007-01-21
  • 打赏
  • 举报
回复
怎么没人答啊,自己顶。
afterchen 2007-01-21
  • 打赏
  • 举报
回复
谢谢 shadowstar 的回答,非常感谢。
shadowstar 2007-01-21
  • 打赏
  • 举报
回复
只是简单说一下,楼主可以参考Delphi接口的相关资料。
shadowstar 2007-01-21
  • 打赏
  • 举报
回复
C++是用继承实现的接口,实际上接口只是由一些纯虚函数组成的抽象类。

而Delphi的接口是独立于类的,接口的祖先是IInterface,而类的祖先是TObject。类的继承于接口无关,也就是说一个类所支持的接口必须有显示的声明。如上代码TSocketDispatcherThread实现了ISendDataBlock接口,而TServerClientThread也实现了ISendDataBlock。这样的继承方式使得类和接口分离,而代码又可以得到复用。

上面的代码应该有一个隐含条件才能成立,即TServerClientThread也实现了ISendDataBlock:

Delphi:
TServerClientThread = class(TSomeObject, ISendDataBlock)
...

C++:
class TSomeObject : public ISendDataBlock
...

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧