我有两个数据库的不同类型的对象与一些常见的功能,所以我想创建一个父类与常用函数的定义。这个想法是,即使对象的类型不同,这些函数也必须执行相同的操作。甲傻例如: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