У меня есть это интересное задание, где у меня есть переменная std::map
из CTurist
(предыдущий класс) и unsigned
. Вот код:
class CTurist
{
protected:
string tName;
int age;
public:
CTurist() {};
CTurist(string name, int age2)
{
tName = name;
age = age2;
}
bool operator<(const CTurist& e) const
{
return age < e.age;
}
friend ostream& operator<<(ostream& os, const CTurist&& e);
friend ifstream& operator>>(ifstream& is, CTurist&& e);
};
class CHotel:public CTurist
{
protected:
string hName;
int stars;
int beds;
map<CTurist, unsigned> Turisti;
public:
unsigned Sum = 0;
CHotel(){};
CHotel(string hName2, int zvezdi, int legla)
{
hName = hName;
stars = zvezdi;
beds = legla;
}
int Compare()
{
list<CTurist*> list;
int br=0;
CTurist vyzrast;
map<CTurist, unsigned>::iterator it = Turisti.begin();
while (it != Turisti.end())
{
if (it->first < vyzrast)
{
br++;
}
else
{
list.push_back(std::move(&it->first));
}
}
}
};
Я знаю, что он довольно длинный, но я подумал, что лучше всего дать вам всю информацию.
Теперь функция int Compare()
ВНУТРИ - это та, которая вызывает у меня проблемы.
Я должен проверить, не превышает ли возраст туристов параметр, который я назвал здесь vyzrast
. Мы сравниваем age
. Если оно внизу, оно довольно прямолинейно.
Если он выше, я должен добавить этих туристов в list<CTurist*>
, иначе. к списку указателей. Если я сделаю список из объектов, а не указателей. Не повезло с этим, поэтому я ищу предложения, как это исправить.