Код: Выделить всё
struct Foo
{
public:
int getI();
void setI(const int& i);
double getD();
void setDouble(const double& d);
private:
int m_i;
double m_d;
}
Функция сортировки выглядела так, когда я использовал только участники в моей структуре foo . Но теперь мне нужно использовать функции Getter и Setter и сделать участника частным. < /P>
template
void sort(T Foo::* mp, bool asc)
{
std::sort(m_items.begin(), m_items.end(), [=](const Foo& s1, const Foo& s2) { return asc ? ((s1.*mp) < (s2.*mp)) : ((s1.*mp) > (s2.*mp)); });
}
< /code>
Я назвал это так: < /p>
myList->sort(&Foo:m_i); // or
myList->sort(&Foo:m_d);
< /code>
Это больше невозможно, потому что участники являются частными, и они должны быть частными. Есть ли способ пропустить функцию getter, который можно вызвать, чтобы сделать сравнение внутри функции сортировки?
Подробнее здесь: https://stackoverflow.com/questions/797 ... -parameter
Мобильная версия