將一組相關的類全部從同一個(基本上是空的)類繼承,這樣客戶可以將所有實例組織到一個容器中,這是否被認爲是一種良好的做法?繼承容器使用的Shell類
例如。
class One : pubic Foo { }
class Two : public Foo { }
class Three : public Foo { }
所以後來我可以做std::vector<Foo*> myClasse
s。
如果不是,什麼被認爲是良好的做法?
將一組相關的類全部從同一個(基本上是空的)類繼承,這樣客戶可以將所有實例組織到一個容器中,這是否被認爲是一種良好的做法?繼承容器使用的Shell類
例如。
class One : pubic Foo { }
class Two : public Foo { }
class Three : public Foo { }
所以後來我可以做std::vector<Foo*> myClasse
s。
如果不是,什麼被認爲是良好的做法?
這是實現多態類型的標準做法。但是,基類是空的是不尋常的。除了其他任何東西,它必須實現一個虛擬析構函數,通常還有其他(可能是純粹的)虛擬函數,必須提供這些函數才能做有用的事情。
只要你添加一個虛擬析構函數到Foo
以便你可以在以後使用dynamic_cast
,你應該沒問題。
沒錯。沒有虛擬方法的基類沒有意義 – 2011-05-23 19:00:59