ExceptionBase (const char* f, const int l, const char *func,
const char* c, const char *e);
+ /**
+ * Destructor. Empty, but needed
+ * for the sake of exception
+ * specification, since the base
+ * class has this exception
+ * specification and the
+ * automatically generated
+ * destructor would have a
+ * different one due to member
+ * objects.
+ */
+ virtual ~ExceptionBase () throw();
+
/**
* Set the file name and line of where the
* exception appeared as well as the violated
class Exception1 : public ExceptionBase { \
public: \
Exception1 (const type1 a1) : arg1 (a1) {}; \
+ virtual ~Exception1 () throw () {}; \
virtual void PrintInfo (std::ostream &out) const { \
out outsequence << std::endl; \
}; \
public: \
Exception2 (const type1 a1, const type2 a2) : \
arg1 (a1), arg2(a2) {}; \
+ virtual ~Exception2 () throw () {}; \
virtual void PrintInfo (std::ostream &out) const { \
out outsequence << std::endl; \
}; \
public: \
Exception3 (const type1 a1, const type2 a2, const type3 a3) : \
arg1 (a1), arg2(a2), arg3(a3) {}; \
+ virtual ~Exception3 () throw () {}; \
virtual void PrintInfo (std::ostream &out) const { \
out outsequence << std::endl; \
}; \
Exception4 (const type1 a1, const type2 a2, \
const type3 a3, const type4 a4) : \
arg1 (a1), arg2(a2), arg3(a3), arg4(a4) {}; \
+ virtual ~Exception4 () throw () {}; \
virtual void PrintInfo (std::ostream &out) const { \
out outsequence << std::endl; \
}; \
Exception5 (const type1 a1, const type2 a2, const type3 a3, \
const type4 a4, const type5 a5) : \
arg1 (a1), arg2(a2), arg3(a3), arg4(a4), arg5(a5) {}; \
+ virtual ~Exception5 () throw () {}; \
virtual void PrintInfo (std::ostream &out) const { \
out outsequence << std::endl; \
}; \