请教 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*的做法有什么优缺点 将类A抽象为接口I,隐藏具体实现,导出I。
I *Create();
Release(I *impl);
回复 #2 modern 的帖子
好抽象 不是很明白先谢过 我去看看这方面知识
解决办法:接口与实现分离
如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]