找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4486|回复: 3

请教 dll 里如何 避免出现ace的头文件

[复制链接]
发表于 2010-5-6 11:29:40 | 显示全部楼层 |阅读模式
问题描述:

自定义的dll里有个导出类 A

A里有个指针成员 p 指向B  因此 A.h 包含 B.h

B 继承自ACE_Task  因此 B.h 包含 ace/Task.h

这样造成 对外提供 A.h A.lib A.dll 时也必须提供 ACE的头文件

本着 “眼不见心为静“ 的原则 想避免出现 ACE相关的头文件 因为外部不会用到ACE 就没必要看到ACE的头


目前解决办法:

A里指针成员写成 void* p

构造A的时候 p = (B*) new B();    使用的时候 都是这样 B* pB = (B*)p; 使用pB


问 :
1.这种情况通常做法是什么
2.void*的做法有什么优缺点
发表于 2010-5-6 13:29:42 | 显示全部楼层
将类A抽象为接口I,隐藏具体实现,导出I。
I *Create();
Release(I *impl);
 楼主| 发表于 2010-5-6 17:52:18 | 显示全部楼层

回复 #2 modern 的帖子

好抽象 不是很明白
先谢过 我去看看这方面知识
 楼主| 发表于 2010-5-7 16:34:12 | 显示全部楼层

解决办法:接口与实现分离

如modern所说 “将类A抽象为接口I,隐藏具体实现,导出I”
导出类为AExp
实现类AImpl 实现AExp的功能 接口一致
AImpl里可以有B


参考以下   关键字: 接口 实现 分离
http://tech.ccidnet.com/art/1081/20060309/460219_1.html
http://tech.ccidnet.com/art/1081/20060309/460219_2.html
http://tech.ccidnet.com/art/1081/20060309/460219_3.html
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-3 12:13 , Processed in 0.011762 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表