ATL中接口继承 指针互转

有IMXLayer和IMXVectLayer两个接口  已经实现了IMXVectLayer继承于IMXLayer

IMXVectLayer的实现是我自己写的,IMXLayer的实现是系统生成的
 1 STDMETHODIMP CMXLayers::GetLayer(LONG idx, IMXLayer** layer)
2 {
3
4 CMXLayer *mxLayer = NULL;
5 switch (pLayer->GetLayerType())
6 {
7 case miLayerVector:
8 mxLayer = (CMXLayer *)new CComObject<CMXVectLayer>;
9 break;
10 default:
11 mxLayer = new CComObject<CMXLayer>;
12 break;
13 }
14
15 if(NULL == mxLayer)
16 return S_FALSE;
17
18 //CMXLayer *mxLayer = new CComObject<CMXLayer>;
19 mxLayer->AddRef();
20 mxLayer->Attach(pLayer);
21 *layer = mxLayer;//这一句出错
22
23 。。。
24
25 。。。

IMXVectLayer的实现是我自己写的,IMXLayer的实现是系统生成的

mxLayer变量的数据没问题 而指向它的layer 数据完全乱了  细心调试发现系统自生成的东西和我自己实现的某些结构不一样遂IMXLayer也自己写了实现

 1 class CMXLayerImp:public IMXLayer
2 {
3 public:
4 CMXLayerImp()
5 {
6
7 }
8
9 ...
10
11 问题解决
posted @ 2011-08-11 15:16  银翼的魔术师  阅读(310)  评论(0编辑  收藏  举报