Сортировать вектор пользовательских объектов (с классами) - PullRequest
0 голосов
/ 02 апреля 2020

Пока все остальные вопросы и ответы, которые я видел, используют struct в качестве объекта. Мой код:

class Thing
{
private:
  string name;
  double balance;
public:
  string getName(){return name;}
  double getBalance(){return balance;}
};

bool sortByName(const Thing &lower, const Thing &upper)
{return (lower.getName() < upper.getName());}

bool sortByBalance(const Thing &lower, const Thing &upper)
{return (lower.getBalance() < upper.getBalance());}

int main()
{
  vector<Thing> myvec
  //Code to add objects with attributes

  sort(myvec.begin(), myvec.end(), sortByName);
  sort(myvec.begin(), myvec.end(), sortByBalance);
  //Code to display rearranged vector

getName() и getBalance() должны возвращать имя объекта, которые являются частными переменными в классе.

Как сравнить два значения из различных классов, а затем реализовать их в функции сортировки?

* Редактировать: я добавил определение класса Thing в начале

1 Ответ

1 голос
/ 02 апреля 2020

Вы должны объявить getName и getBalance как постоянные функции.

class Person
{
  ...
  const string& getName() const { return name; }
}
...