2011-05-23 125 views
1

將一組相關的類全部從同一個(基本上是空的)類繼承,這樣客戶可以將所有實例組織到一個容器中,這是否被認爲是一種良好的做法?繼承容器使用的Shell類

例如。

class One : pubic Foo { } 
class Two : public Foo { } 
class Three : public Foo { } 

所以後來我可以做std::vector<Foo*> myClasse s。

如果不是,什麼被認爲是良好的做法?

回答

2

這是實現多態類型的標準做法。但是,基類是空的是不尋常的。除了其他任何東西,它必須實現一個虛擬析構函數,通常還有其他(可能是純粹的)虛擬函數,必須提供這些函數才能做有用的事情。

+0

沒錯。沒有虛擬方法的基類沒有意義 – 2011-05-23 19:00:59

1

只要你添加一個虛擬析構函數到Foo以便你可以在以後使用dynamic_cast,你應該沒問題。