Пропустить функцию Getter в качестве параметраC++

Программы на C++. Форум разработчиков
Anonymous
Пропустить функцию Getter в качестве параметра

Сообщение Anonymous »

У меня есть следующая структура: < /p>

Код: Выделить всё

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 в зависимости от одного свойства.
Функция сортировки выглядела так, когда я использовал только участники в моей структуре 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

Вернуться в «C++»