Ответ: Обработка ошибок, логи и не только.
1. Не охота писать конструктор в производных классах
|
#include <iostream>
using namespace std;
class Error
{
public:
virtual ~Error() {}
void Log() {
cout<< GetErrorName() << " : " <<GetSolutionName() << endl;
}
virtual const char * GetErrorName() = 0;
virtual const char * GetSolutionName() = 0;
};
class BeerIsOver : public Error
{
public:
const char * GetErrorName() { return "You beer is over";}
const char * GetSolutionName() { return "bye";}
};
class LightIsRed : public Error
{
public:
const char * GetErrorName() { return "Lamp is red!";}
const char * GetSolutionName() { return "don't see";}
};
int main()
{
try
{
throw BeerIsOver();
}
catch(Error &r)
{
r.Log();
}
try
{
throw LightIsRed();
}
catch(Error &r)
{
r.Log();
}
cout << "Ok..." << endl;
return 0;
}
__________________
Шутить надо так, чтобы потом не было мучительно больно за бесцельно выбитые зубы.
|