我在作回调的时候,采用的是mfc写的客户程序。
为什么编译不过去,先将程序列出来,谢谢各位帮忙。
视图代码:(在其中加了一个类CCallBack
#include <atlbase.h>
CComModule _Module;
#include <atlcom.h>
#include <atlimpl.cpp>//#define WIN32_DCOM 0x0500BEGIN_OBJECT_MAP(ObjectMap)
END_OBJECT_MAP()class CCallBack :
   public CComObjectRoot,
   public ICallBack
{public:
   CCallBack() {};
   ~CCallBack() {};BEGIN_COM_MAP(CCallBack)
   COM_INTERFACE_ENTRY(ICallBack)
END_COM_MAP()// ICallBack
public:
public:STDMETHODIMP ComeBack()
{
MessageBox(NULL,"I have come back!","OK!",MB_OK);
return S_OK;
}
};实现方法:void CClient1View::OnStart() 
{
// TODO: Add your command handler code here
HaveStart = true;
HRESULT hr;
CoInitialize(0);
hr = CoCreateInstance(CLSID_Test,
NULL,
CLSCTX_SERVER,
IID_ITest,
(void**)&pTest); #ifdef NEED_FINAL_CONSTRUCT
CComObject<CCallBack>* m_pCallBack;
CComObject<CCallBack>::CreateInstance(&m_pCallBack);
#else
CComObject<CCallBack>* m_pCallBack = new CComObject<CCallBack>;
#endif CComPtr<ICallBack> ptrCallBack ; 
    m_pCallBack->QueryInterface( IID_ICallBack, (void**) &ptrCallBack ); hr = pTest->Advise(ptrCallBack); hr = pTest->SendData(); hr = pTest->Unadvise();

}
提示错误:
:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : warning C4259: 'long __stdcall ICallBack::Nothing(void)' : pure virtual function was not defined
        d:\userfile\ok\calldisp\calldisp.h(179) : see declaration of 'Nothing'
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:
D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : warning C4259: 'long __stdcall ICallBack::Nothing(void)' : pure virtual function was not defined
        d:\userfile\ok\calldisp\calldisp.h(179) : see declaration of 'Nothing'
Error executing cl.exe.谢谢
client1.exe - 2 error(s), 2 warning(s)

解决方案 »

  1.   

    ICallBack接口的Nothing()函数没有实现呀?
      

  2.   

    主要的出错原因不在那。所以我没有写。
    好像主要的原因是:
    \userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:

    D:\userfile\ok\CallDisp\client1\client1View.cpp(165) : error C2259: 'CComObject<class CCallBack>' : cannot instantiate abstract class due to following members:我不知道怎么去改了。
      

  3.   

    编绎错误说的再清楚不过了, ICallBack::Nothing(void)没有实现代码