ATL中接口继承 指针互转
有IMXLayer和IMXVectLayer两个接口
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 数据完全乱了
1 class CMXLayerImp:public IMXLayer
2 {
3 public:
4 CMXLayerImp()
5 {
6
7 }
8
9 ...
10
11 问题解决