Создание указателя на метод std::vector::at()

167
22 сентября 2017, 20:03

Требуется создать указатель на функцию at() стандартного вектора, например std::vector.

Но код:

typedef std::vector<int> vi;
typedef  int& (vi::*viFnPtr)(int);
viFnPtr fp = &vi::at;//ошибка

выдает ошибку преобразования функции at() к типу

int& (class std::vector<int>::*)(int)

В чем может быть дело?

Answer 1

Попробуйте указать точнее, с верными сигнатурами, что именно вы хотите:

typedef std::vector<int> vi;
typedef  const int& (vi::*viFnPtrC)(size_t) const;
viFnPtrC fpc = &vi::at;
typedef  int& (vi::*viFnPtr)(size_t);
viFnPtr fp = &vi::at;
READ ALSO
Правильный ли алгоритм к заданию? [требует правки]

Правильный ли алгоритм к заданию? [требует правки]

Правильно ли я сделал алгоритм к заданию? (Оно на картинке в углу)

210
Popup Maker - как отключить куки?

Popup Maker - как отключить куки?

Установлен Popup Maker, в нем Contact Form 7После отправки заполненной формы попап больше не открывается

223
Триггер с передачей инициатора эвента &hellip; jquery

Триггер с передачей инициатора эвента … jquery

Хочу вызвать триггер кликом, чтобы this из другой функции подхватил кликнутый элементМой код получает ошибку на slice, что значение не определено

185