Пропустить функцию 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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