开发者

Error - "throws different exceptions" in C++

I am getting an error that tells me

error: declaration of '开发者_C百科virtual FXHost::~FXHost()' throws different exceptions
error: than previous declaration 'virtual FXHost::~FXHost() throw ()'

I am not sure how to begin solving this, I have never encountered this before.

in my .h I have:

public:
    virtual                         ~FXHost() throw();

in my .cpp I have:

FXHost::~FXHost()
{
   gHost = NULL;
}

Pointers appreciated.


The throw() at the end of a function declaration is an exception specification. It means the function never throws an exception. This cannot be overridden (only restricted further) in derived classes, hence the error.

Since your implementation doesn't throw exceptions itself, all you need is adding throw() to your destructor declaration.

See here why you should (not) use this (mis)feature of C++


FXHost::~FXHost() throw()
{
   gHost = NULL;
}

Your implementation has to be at least as restrictive in terms of exception throwing as its declaration.


You want:

FXHost::~FXHost() throw()
{
   gHost = NULL;
}

Though this destructor suggests a poor design - it's unlikely that a destructor will work correctly simply by setting a pointer, even a global pointer, to NULL.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜