vc6的程序在vc2003运行;
出现以下错误:
error C2259: 'CException' : cannot instantiate abstract class所对应的程序行是:
throw new CException;
请教大虾,应该怎么修改?另外还有这个错误:
error C2316: 'CException &' : cannot be caught as the destructor and/or copy constructor are inaccessible
将程序行 catch(CException& e)
改为
catch(CException* e)
没有错误,这样改应该没问题吧?
出现以下错误:
error C2259: 'CException' : cannot instantiate abstract class所对应的程序行是:
throw new CException;
请教大虾,应该怎么修改?另外还有这个错误:
error C2316: 'CException &' : cannot be caught as the destructor and/or copy constructor are inaccessible
将程序行 catch(CException& e)
改为
catch(CException* e)
没有错误,这样改应该没问题吧?
class AFX_NOVTABLE CException : public CObject
{
// abstract class for dynamic type checking
DECLARE_DYNAMIC(CException)public:
// Constructors
CException(); // sets m_bAutoDelete = TRUE
explicit CException(BOOL bAutoDelete); // sets m_bAutoDelete = bAutoDelete// Operations
void Delete(); // use to delete exception in 'catch' block virtual BOOL GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
PUINT pnHelpContext = NULL);
virtual int ReportError(UINT nType = MB_OK, UINT nMessageID = 0);// Implementation (setting m_bAutoDelete to FALSE is advanced)
public:
virtual ~CException() = 0;
BOOL m_bAutoDelete;
#ifdef _DEBUG
void PASCAL operator delete(void* pbData);
#if _MSC_VER >= 1200
void PASCAL operator delete(void* pbData, LPCSTR lpszFileName, int nLine);
#endif
protected:
BOOL m_bReadyForDelete;
#endif
};显然它是一个虚类,不能实例化的。catch对应于throw new,应该是catch指针,如果是throw T,则用catch(T&)
http://msdn2.microsoft.com/en-us/library/yx1b5f5w.aspx或创建自己的异常类
还有如果用http://msdn2.microsoft.com/en-us/library/yx1b5f5w.aspx的类,各个类的区别是否很大?如何选择?
如果创建自己的异常类,是否是从CException继承?这个类放在哪个文件里呢?还是新建个cpp文件和头文件?
能否给个实例?或者查找哪一类的资料?
问这么多问题,还请大虾们耐心回答。谢谢!