2015-10-09 91 views
0

error: declaration of 'virtual const char* numberOutOfBounds::what() const' has a different exception specifier嘗試在C++中實現例外時發生錯誤

我一直在尋找解決方案,並且找不到我做錯了什麼。從我的頭文件

例外:

class FileException:public exception { 
public: 
    virtual const char* what() const throw(); 
}; 

class numberOutOfBounds:public exception { 
public: 
    virtual const char* what() const throw(); 
}; 

的例外在我的cpp文件:

const char* FileException::what() const { 
    return "Cannot open file"; 
} 

const char* numberOutOfBounds::what() const { 
    return "illegal number entered"; 
} 

有人可以讓我知道我在做什麼錯誤嗎? 我環顧四周,無法弄清楚爲什麼我收到我得到的錯誤消息。

+1

已經有一個'的std :: out_of_range'例外。 –

+0

你的函數聲明中有'throw'說明符,但不在定義上;給定義添加'thrrow'。 –

+0

我把它從聲明中拿出來,並得到了關於我如何「重寫虛擬const char *」的不同錯誤,無論如何 – user83676

回答

2

virtual const char* what() const throw();

此函數的聲明有throw的聲明,但是它的自定義丟失。

您需要:

const char* FileException::what() const throw() { 
            // ^^^^^^^ - added 
    return "Cannot open file"; 
} 

僅供參考,已經有一個std::out_of_range異常類。

0

實現一個例外的正確方法:

class myexception: public exception { 
virtual const char *what() const throw() 
{ 
return "Exception occured!!"; 
} 
}myexc; 

int main() { 
try 
{ 
    throw myex; 
} 
catch (exception& e) 
{ 
    cout << e.what() << '\n'; 
} 
return 0; 
} 
相關問題