我想创建一个通用的抽象TimePeriod
类。它的示例子类是Day
,Hour
和Minute
。
我还想创建一个通用的TimeData
类,该类将TimePeriod
对象与一些数据相关联,例如该时间段内最低和最高温度的两个double
。
为此目的创建一个抽象的Data
类可能不是一个坏主意。因此,TimeData
会将TimePeriod
与Data
关联。
这是一个示例,层次结构看起来像w.r.t.时间:
除了“垂直”亲子关系(当我在某个小时工作时,我想知道该小时是在哪一天),我还希望“水平”关系可以让我轻松地遍历每日数据,小时数据,分钟数据等。
您能给我一些关于如何在C++中将其建模为类的想法吗?我需要使用指针(在这种情况下,我更喜欢智能指针)还是可以使用更简单的vector
,list
等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
}
};