1 2#ifndef EXCEPTIONS_H 3#define EXCEPTIONS_H 4 5struct ExceptionBase { 6 ExceptionBase(); 7 ~ExceptionBase(); 8}; 9 10struct ExceptionA : ExceptionBase { 11 ExceptionA(); 12 ~ExceptionA(); 13 14 int a; 15}; 16 17struct ExceptionB : ExceptionBase { 18 ExceptionB(); 19 ~ExceptionB(); 20 21 int b; 22}; 23 24struct VirtualExceptionBase : ExceptionBase { 25 VirtualExceptionBase(); 26 virtual ~VirtualExceptionBase(); 27}; 28 29struct VirtualExceptionA : VirtualExceptionBase { 30 VirtualExceptionA(); 31 virtual ~VirtualExceptionA(); 32 33 int a; 34}; 35 36struct VirtualExceptionB : VirtualExceptionBase { 37 VirtualExceptionB(); 38 virtual ~VirtualExceptionB(); 39 40 int b; 41}; 42 43void throwBase(); 44void throwA(); 45void throwB(); 46void throwVirtualBase(); 47void throwVirtualA(); 48void throwVirtualB(); 49void throwInt(); 50 51 52#endif // EXCEPTIONS_H 53