我收到一条告诉我的错误
error: declaration of 'virtual FXHost::~FXHost()' throws different exceptions
error: than previous declaration 'virtual FXHost::~FXHost() throw ()'
我不知道如何开始解决这个问题,我以前从未遇到过这个问题。
在我的.h我有:
public:
virtual ~FXHost() throw();
在我的.cpp中我有:
FXHost::~FXHost()
{
gHost = NULL;
}
指针赞赏。
答案 0 :(得分:5)
函数声明末尾的throw()
是一个异常规范。这意味着该函数永远不会抛出异常。这不能在派生类中被覆盖(仅限于进一步限制),因此是错误。
由于您的实现本身不会抛出异常,因此您只需要在析构函数声明中添加throw()
。
答案 1 :(得分:3)
FXHost::~FXHost() throw()
{
gHost = NULL;
}
您的实施必须至少在例外投掷方面与其声明一样具有限制性。
答案 2 :(得分:2)
你想:
FXHost::~FXHost() throw()
{
gHost = NULL;
}
虽然这个析构函数表明设计很糟糕 - 但是通过将指针(甚至是全局指针)设置为NULL,析构函数不太可能正常工作。