Использование std::map для поиска обработчиков функций [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование std::map для поиска обработчиков функций [дубликат]

Сообщение Anonymous »

Я пытаюсь использовать std::map для сопоставления числовых идентификаторов с обработчиками функций: все обработчики функций принимают два целых числа и возвращают целое число. Обработчик 100 вычислит произведение.
При подготовке карты компилятор выдает prog.cc:16:17: error: no match function для вызова 'std::map::insert(int, int (*)(int, int))'. Обратите внимание на идентичную подпись (int, int (*)(int, int)) на обеих сторонах сообщения об ошибке.
Мои вопросы:
  • Разумно ли использовать std::map для описанной цели?
  • Почему пример кода выдает ошибку, и это очевидно
  • Как исправить код?
Несмотря на то, что у меня более 40 лет опыта программирования, я совершенно новичок в C++ и наверняка мне здесь не хватает некоторых базовых аспектов. Можете ли вы указать мне правильное направление?
Спасибо!
#include

typedef int (*t_handler)(int,int);
// Gives the same result: using t_handler = int (*)(int,int);

int product(int u, int v) {
return u*v;
}

// Map numeric ID to a function
std::map myMap;

int main() {
// Define 100 as the function to calculate the product
myMap.insert(100, &product); // prog.cc:16:17: error: no matching function for call to 'std::map::insert(int, int (*)(int, int))'

// Calculate 5*8
int x = myMap[100](5, 8);
return 0;
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... n-handlers
Ответить

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

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

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

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

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