CComPtr的不能理解.解决方法
CComPtr的不能理解.
CComPtr的构造函数是这样的:
CComPtr( ) throw ( );
CComPtr(
T* lp
) throw ( );
CComPtr (
const CComPtr< T >& lp
) throw ( );
但可以这样声明:
CComPtr<IConnectionPoint> spConnectionPoint;
请问这样声明符合上面的第几种情况, 是第二种情况吗? 应该不会吧, 它的参数是个指针呀, 而IConnectionPoint是接口类不是指针.
如果是的话,第二种情况为什么不把*去掉而这样声明呢?
CComPtr(
T lp
) throw ( );
------解决方案--------------------
调用这个无参数的构造CComPtr( ) throw ( );
IConnectionPoint *p = NULL;
CComPtr<IConnectionPoint> spConnectionPoint(p);
这样的话就是调用这个构造
CComPtr(T* lp) throw() :
CComPtrBase<T>(lp)
{
}
------解决方案--------------------
你没有调用带参数的构造函数,所以是这种情况:
CComPtr( ) throw ( );
CComPtr<IConnectionPoint>这个当成一个类型来看,跟int一样,你的代码就如同:
int i;
如果你需要传递一些参数给构造函数,就要如下:
int i(10);
CComPtr的构造函数是这样的:
CComPtr( ) throw ( );
CComPtr(
T* lp
) throw ( );
CComPtr (
const CComPtr< T >& lp
) throw ( );
但可以这样声明:
CComPtr<IConnectionPoint> spConnectionPoint;
请问这样声明符合上面的第几种情况, 是第二种情况吗? 应该不会吧, 它的参数是个指针呀, 而IConnectionPoint是接口类不是指针.
如果是的话,第二种情况为什么不把*去掉而这样声明呢?
CComPtr(
T lp
) throw ( );
------解决方案--------------------
调用这个无参数的构造CComPtr( ) throw ( );
IConnectionPoint *p = NULL;
CComPtr<IConnectionPoint> spConnectionPoint(p);
这样的话就是调用这个构造
CComPtr(T* lp) throw() :
CComPtrBase<T>(lp)
{
}
------解决方案--------------------
你没有调用带参数的构造函数,所以是这种情况:
CComPtr( ) throw ( );
CComPtr<IConnectionPoint>这个当成一个类型来看,跟int一样,你的代码就如同:
int i;
如果你需要传递一些参数给构造函数,就要如下:
int i(10);