重複の可能性:
子に同じ仮想関数を強制的に親仮想関数を最初に呼び出す方法
各派生クラスが特定の仮想関数をオーバーライドし、その親クラスの仮想関数を呼び出すことによってその実装を開始するクラス階層があります。目標は、派生した各実装を実行することですが、私はそれを行う方法が好きではありません。
たとえば、私はこのクラスを持っています:
class base
{
public:
void do_stuff() { do_something(); }
virtual void do_something() { }
};
次に、このクラスをいくつかのレベルで導き出します。
class derived_10:
public derived_9 // which inherit from derived_8 and so on until derived_0
// which inherit from base
{
public:
virtual void do_something()
{
// this will also call derived_8::do_something() and so on
// until base::do_something()
derived_9::do_something();
// then, some stuff
}
};
base :: do_stuff()が呼び出されたときに、派生クラスがこれを実行することを期待せずに、すべてのderived_x :: do_something()が順番に呼び出されるようにするソリューションを探しています。この動作を実現するための最良の方法についてのアイデアはありますか?