我想创建一个通用的抽象TimePeriod类。它的示例子类是DayHourMinute

我还想创建一个通用的TimeData类,该类将TimePeriod对象与一些数据相关联,例如该时间段内最低和最高温度的两个double

为此目的创建一个抽象的Data类可能不是一个坏主意。因此,TimeData会将TimePeriodData关联。

这是一个示例,层次结构看起来像w.r.t.时间:

除了“垂直”亲子关系(当我在某个小时工作时,我想知道该小时是在哪一天),我还希望“水平”关系可以让我轻松地遍历每日数据,小时数据,分钟数据等。

您能给我一些关于如何在C++中将其建模为类的想法吗?我需要使用指针(在这种情况下,我更喜欢智能指针)还是可以使用更简单的vectorlist等STL类?

最佳答案

您可以将struct更改为class。我真的不明白为什么要定义TimePeriod为抽象。我也建议制作一个类型为TimePeriod的链表。列表中的每个项目都将通过next指针指向下一个时间段项目。

struct TimeData
{
    int minTemp;
    int maxTemp;

    public int setData(int minTemp,int maxTemp)
    {
    }
}

struct TimePeriod
{
    Day d;//this is kinda redundant as it only contains one day
    TimeData td;
    TimePeriod *next;//to point to next TimePeriod object in the list
};

struct day
{
    int d;
    Hour h[24];
    TimeData td;
    int setTimeData()
    {
        //cycle through hour timedata and calculate avg or whatever you want
    }
};
struct Hour
{
    int h;
    Min m[60];
    TimeData td;
    int setTimeData()
    {
        //cycle through min timedata and calculate avg or whatever you want
    }

};
struct Min
{
    int m;
    TimeData td;
    int setTimeData(int minTemp,int maxTemp)
    {
        //set  TimeData td
    }
};

10-08 00:37