例えば:
基本クラスのヘッダー ファイルには次のものが含まれます。
enum FOO
{
FOO_A,
FOO_B,
FOO_C,
FOO_USERSTART
};
次に、派生クラスには次のものがあります。
enum FOO
{
FOO_USERA=FOO_USERSTART
FOO_USERB,
FOO_USERC
};
私の使用法を明確にするために、基本クラスにイベントがあり、派生クラスがイベントを追加できるイベントハンドラーを持つためです。派生クラスのイベント ハンドラーはそのイベントをチェックし、イベントがそれに対するものでない場合は、イベントを基本クラスに渡します。
class Base
{
public:
virtual void HandleFoo(FOO event);
};
class Derived: public Base
{
public:
void HandleFoo(FOO event);
};
void Base::HandleFoo(FOO event)
{
switch(event)
{
case FOO_A:
/* do stuff */
break;
case FOO_B:
/* do stuff */
break;
case FOO_B:
/* do stuff */
break;
}
}
void Derived::HandleFoo(FOO event)
{
switch(event)
{
case FOO_USERA:
/* do stuff */
break;
case FOO_USERB:
/* do stuff */
break;
case FOO_USERB:
/* do stuff */
break;
default:
/* not my event, must be for someone else */
Base::HandleFoo(event);
break;
}
}