acedev 发表于 2010-5-6 11:29:40

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

问题描述:

自定义的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*的做法有什么优缺点

modern 发表于 2010-5-6 13:29:42

将类A抽象为接口I,隐藏具体实现,导出I。
I *Create();
Release(I *impl);

acedev 发表于 2010-5-6 17:52:18

回复 #2 modern 的帖子

好抽象 不是很明白
先谢过 我去看看这方面知识

acedev 发表于 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
页: [1]
查看完整版本: 请教 dll 里如何 避免出现ace的头文件