Я хочу создать общий реферат TimePeriod
учебный класс. Пример подклассов этого будет Day
, Hour
а также Minute
,
Я также хочу создать общий TimeData
класс, который связывает TimePeriod
объект с некоторыми данными, такими как два double
s для самой низкой и самой высокой температуры в течение этого периода времени.
Создание тезисов Data
Класс для этой цели не может быть плохой идеей. Так что TimeData
будет ассоциировать TimePeriod
с Data
,
Вот пример того, как иерархия может выглядеть как w.r.t. время:
В дополнение к «вертикальным» отношениям «родитель-ребенок» (когда я работаю с определенным часом, я хочу знать, в какой день этот час), я также хочу «горизонтальные» отношения, которые позволяют мне легко проходить через ежедневные данные, почасовые данные, минутные данные и т. д.
Можете ли вы дать мне идеи о том, как смоделировать это как классы в C ++? Нужно ли использовать указатели (в этом случае я бы предпочел умные указатели) или я могу использовать более простые vector
, list
и т.д. STL классы?
Вы можете изменить структуру на класс. Я действительно не понимаю, почему вы хотите определить 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
}
};
Других решений пока нет …