在这种情况下,如何管理继承?

时间:2020-06-07 09:33:07

标签: c++ templates inheritance stl virtual

我正在尝试用C ++创建一个可以包含各种数据类型的表。因此,我创建了一个虚拟模板类“ Column”,并从中派生了“ IntColumn”,“ FloatColumn”等。 然后,我想创建一个std :: vector来用所有列填充它。问题是,如果我尝试创建 Column type 的向量,则应该指定Column的类型(因为它是模板),并且要创建 Child type 对象我不能,因为它说构造函数被隐式删除。

我知道这对您来说似乎很愚蠢,但是我对这些事情并不陌生,在这种情况下我真的不知道该怎么办。

我的目标是能够创建一个列向量(可以存储int,float,char,string,Date,Time类型),并具有可以从所有列类型提取数据的方法。 (日期和时间是我已经创建的类)

如果我应该包括一些代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

我不知道您的列类型应代表什么,因此我将为您提供两种方法:

  1. 描述一列。在这种情况下,您将具有描述表的列描述符数组,而您所需要的只是一个“多态容器”。使用该关键字可以使您更进一步。
  2. 包含一列的值。在这种情况下,您做错了方法。在顶层,使用像vector这样的容器包含行(而不是列!)。然后,每一行都包含一个简单的结构或值类。