- 论坛徽章:
- 0
|
10可用积分
我有一个这样的类:
class A
{
public:
A();
~A();
//在A的实现部分中,GetStr仅是用来返回val
CString *GetStr();
private:
CString *val;
}
|
这个类放在一个DLL中,导出了。
因为使用了MFC的CString
我要在一个SDK程序里面使用。 所以,没办法使用这个CString,只要引入这个头文件,就会导致CString未声明的错误。
所以我就要用个中间接口来做,自己定义一个B类
然后将CString这样的不可使用类型都屏蔽起来,对外提供char *类型的来代替。
即:
class B
{
public:
char *GetStr();
private:
A a; //在GetStr中调用A的操作,然后将CString转为char *
} |
但是出现问题了,我只要引用了A的声明,在那个SDK程序中就会出现CString未定义的错误!!!
那我如何才能将A的声明也屏蔽掉???
也就是说,只要A的声明不在B的头文件B.h中出现,不把A的声明暴露出来就可以了。
有没有可能实现???
谢谢! |
最佳答案
查看完整内容
你的想法是对的,但是实现却隐藏了你想法的天真性 adapter有输入和输出两种接口,并且对两边都要保持独立性,就是减少依赖。你把它做成com好了,输入,输出都是基本的com类型数据,这样就是个adapter了
|