【问题标题】:How can I manage inheritance in this case?在这种情况下如何管理继承?
【发布时间】:2020-09-26 07:38:51
【问题描述】:

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

我知道这对你来说可能很愚蠢,但我对这些事情很陌生,我真的不知道在这种情况下该怎么做。

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

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

【问题讨论】:

    标签: c++ templates inheritance stl virtual


    【解决方案1】:

    我不知道你的列类型应该代表什么,所以我会给你两种方法:

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

    【讨论】:

    • 感谢您的回复!您建议的第二种方法的问题是用户应该能够选择应该有多少列以及什么类型。所以要走的路是更好地理解“多态容器”是如何工作的,对吗? (我要完成的任务是只使用 C++ 创建一个类似 SQL 的数据库)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多