I am working on exception handling for a piece of software I write in C++. I encounter a compiler error (using g++ (GCC) 4.8.1 / mingw32) I don't understand, here is a minimal example:
#include <iostream>
#include <exception>
class Bad_Img_Load: public std::exception {
//public:
virtual const char* what() const throw(){
return "An image could not be loaded.";
}
};
int main () {
try{
throw Bad_Img_Load();
}catch (Bad_Img_Load& e){
std::cout << e.what() << '\n';
}
return 0;
}
The error is:
a.cpp: In function 'int main()':
a.cpp:6:22: error: 'virtual const char* Bad_Img_Load::what() const' is private
virtual const char* what() const throw(){
^
a.cpp:15:25: error: within this context
std::cout << e.what() << '\n';
^
Note that if I uncomment the line 'public:' then it works just fine. But the class 'exception' from which it inherits defines everything as public. So I don't understand why this error crops up at all.