可能重複:
How to force child same virtual function call its parent virtual function first如何調用被覆蓋的方法,所有派生類
我有一個類層次結構,其中每個派生類中重寫一個給定的虛擬功能,並通過調用開始其實施在其父級中的一個。目標是讓每個派生的實現都被執行,但我不喜歡我這樣做。
例如,我有這個類:
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 2012-04-24 19:34:59
這個問題太糟糕了,以dup的形式結束。我即將發佈一個答案。這個評論將不得不做。那麼像[this](http://codepad.org/MtRoQ6Bg)這樣的東西呢? – greatwolf 2012-04-24 19:49:41
@cameron,層次結構描述了遊戲對象,如word_item < - renderable_item < - character < - monster < - playable_character < - hero。它沒有10級的深度,但仍然變得相當大。 – Julien 2012-04-25 15:48:19