新しい「例外」クラスを定義したいことがよくありますが、コンストラクターは継承されないため、適切なコンストラクターを定義する必要があります。
class MyException : public Exception
{
public:
MyException (const UString Msg) : Exception(Msg)
{
};
}
Typedef は単にエイリアスであり、新しいクラスではないため、これには機能しません。現在、この些細なボイラープレートの繰り返しを避けるために、私はドンキーワークを行う #define を使用しています。
#define TEXCEPTION(T) class T : public Exception \
{ \
public:\
T(const UString Msg) : Exception(Msg) {}; \
}
...
TEXCEPTION(MyException);
しかし、これを達成するためのより良い方法があるかどうか疑問に思っています-おそらくテンプレート、またはいくつかの新しいC ++ 0x機能を使用して