【发布时间】:2014-09-23 11:16:38
【问题描述】:
我有两个不同类型对象的数据库,它们具有一些常用功能,因此我想创建一个包含常用功能定义的父类。这个想法是,即使对象的类型不同,这些函数也必须执行相同的操作。一个愚蠢的例子:
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 可能会有所帮助。
标签: c++ class inheritance