我有兩個數據庫的不同類型的對象與一些常見的功能,所以我想創建一個父類與常用函數的定義。這個想法是,即使對象的類型不同,這些函數也必須執行相同的操作。甲傻例如:C++在派生類中指定變量類型後驗
class Database
{
public:
// retrieve size of the dataset
int Size() const {return list_.size();}
};
class DerivedDatabase : public Database
{
private:
// list of dataset objects
std::vector<Object1> list_;
};
class DerivedDatabase2: public Database
{
private:
// list of dataset objects
std::vector<Object2> list_;
};
一種解決方案是定義用作virtual Size() const =0
然後有派生類覆蓋它。然而,當我必須創建新類型的數據庫時,這個想法已經實現了。有沒有辦法在派生類中指定後驗變量類型?這兩個派生數據庫本質上是不同的,除了一些常用的功能外,它們的行爲完全不同。因此,他們必須是獨立的對象
一個共同的基類型[CRTP(http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)可以幫助。 – Jarod42 2014-09-23 11:21:43