可能性の重複:私は、各派生クラスは、与えられた仮想関数をオーバーライドし、呼び出すことによって、その実装を起動するためのクラス階層構造を持っている
How to force child same virtual function call its parent virtual function firstどのようにすべての派生クラスでオーバーライドされたメソッドを呼び出すため
その親クラスの1つ目的は、派生した実装のそれぞれを実行させることですが、私はそれをやり方が好きではありません。
例えば、私はこのクラスを持っている:
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
}
};
私は確信してすべてのderived_xことになります解決策を探しています: :do_something()は、base :: do_stuff()が呼び出されたときに派生クラスがこれを自分自身で行うことを期待せずに、順番に呼び出されます。あなたはこの行動をとるための最良の方法を知っていますか?
継承階層が深いのはなぜですか? – Cameron
この質問は二重引用符(dup)として閉鎖されています。私はこれに答えるつもりだった。このコメントは、行う必要があります。どうすれば[this](http://codepad.org/MtRoQ6Bg)のようになりますか? – greatwolf
@cameronの場合、階層はword_item < - renderable_item < - character < - monster < - playable_character < - heroのようなゲームオブジェクトを記述する。それは10のクラスの深さを持っていませんが、それはまだかなり大きくなります。 – Julien