C/C++

Помогите понять отношения между классами / C/C++

Есть задача, смоделировать вот такую ситуацию


В каждом ГОРОДЕ есть несколько ПОЧТОВЫХ ОТДЕЛЕНИЙ, которые принимают и отправляют ПОСЫЛКИ. Определяется их вес,
дата отправки и доставки, цена. КЛИЕНТ отправляет посылку и платит деньги за ее доставку

капсом выделил классы
Уже перечитал много статей по этой теме но так и не решил как грамотно устроить связь между объектами((
Что-то типа такого...
 struct Посылка{ 
Посылка() : оплачено(false) {}
Вес вес;
ДатаОтправки до;
ДатаДоставки дд;
Цена цена;
bool оплачено;
void взвесить(Вес вес) {
this->вес = вес;
}
void оценить_и_оплатить(Цена цена) {
this->цена = цена;
оплачено = true;
}
void отправить_и_доставить(ДатаОтправки до, ДатаДоставки дд) {
this->до = до;
this->дд = дд;
}
};
struct Клиент{
ФИО фио;
Клиент(ФИО фио) : фио(фио) {}
void load(Select select) {
посылки = select.execute();
}
void save(Update update) {
update.execute();
}
void add(Посылка& посылка) {
посылки.push_back(посылка);
}
vector посылки;
};
struct ПочтовоеОтделение {
Индекс индекс;
vector клиенты;
ПочтовоеОтделение(Индекс индекс) : индекс(индекс) {}
void load(Select select) {
клиенты = select.execute();
}
void save(Update update) {
update.execute();
}
void accept(Клиент& клиент) {
for (auto& посылка : клиент.посылки) {
взвесить(посылка);
оценить_и_оплатить(посылка);
отправить_и_доставить(посылка);
}
клиенты.push_back(клиент);
}
void update(const ПочтовоеОтделение& отделение) {

}
friend bool operator==(const ПочтовоеОтделение& a, const ПочтовоеОтделение& b) {
return a.индекс == b.индекс;
}
};
struct Город {
Название название;
Город(Название название) : название(название) {}
void load(Select select) {
отделения = select.execute();
}
void save(Update update) {
update.execute();
}
void update(ПочтовоеОтделение& отделение) {
if (отделения.contains(отделение)) {
auto target = find(отделения.begin(), отделения.end(), отделение);
target->update(отделение);
} else {
отделения.push_back(отделение);
}
}
vector отделения;
};
P.S. Город никакого отношения к почтовому отделению не имеет. Это отделения имеют индекс предприятия связи и места назначения, а также фактический почтовый адрес. Сами же отделения структурно входят в состав почтовой организации. Отделения одного города никак между не связаны, у них раздельные балансы. Хотя и имеют возможность передать почтовое отправление для выдачи в другое отделение по личной просьбе получателя в устной либо письменной форме.
Влад Пызыков
Влад Пызыков
88 674
Лучший ответ
в чистом Си нет классов, только в с++

<капсом выделил классы> что есть "капс" ?

сформулируйте проблему точнее, не понятно.
В ПОСЫЛКЕ указываешь ссылку на ПОЧТОВОЕ ОТДЕЛЕНИЕ и ссылку на КЛИЕНТА, в ПОЧТОВОМ ОТДЕЛЕНИИ указываешь ссылку на ГОРОД.