我有一个类,其定义如下。
class SampleClass: public IDispatchImpl<Interface1, &__uuidof(Interface1)>,
public IDispatchImpl<Interface2, &__uuidof(Interface2)>,
public IDispatchImpl<Interface3, &__uuidof(Interface3)>,
public CComObjectRootEx<CComSingleThreadModel>
{
BEGIN_COM_MAP(SampleClass)
COM_INTERFACE_ENTRY(Interface1)
COM_INTERFACE_ENTRY(Interface2)
COM_INTERFACE_ENTRY(Interface3)
COM_INTERFACE_ENTRY2(IDispatch, Interface1)
END_COM_MAP()
..............................
..............................
}
这就是我实例化课程的方式。
CComObject<SampleClass> *t;
CComObject<SampleClass>::CreateInstance(&t);
上面的代码在下面显示的行中抛出一个空指针异常。(来自“atlcom.h”文件)。
template <class Base>
class CComObject :
public Base
{
public:
typedef Base _BaseClass;
CComObject(_In_opt_ void* = NULL) throw()
{
_pAtlModule->Lock(); //_pAtlModule is NULL,and hence NULL pointer exception is thrown
}
..............................
..............................
}
我认为SampleClass的定义存在一些问题。 任何人都可以帮我搞清楚吗? 提前谢谢..