Задать вопрос
@newmersedez

Почему пишет ошибку при попытке использовать шаблонную функцию?

Здравствуйте, есть вот такое задание:
Написать функцию, принимающую список целых чисел и указатель на функцию типа int (int), и заменяющую каждый элемент списка на результат применения к нему функции-параметра.


Я попытался написать эту функцию, вот как выглядит мой код:
#include <iostream>
#include <ctype.h>
#include "fixedstack.h"
 
using namespace std;
 
template<typename int>
void    function3(int [], int, int(*)(int));
 
int     foo(int);
 
 
int     main()
        int size = 0;
    int number = 0;
    int i = 0;
    int* array = NULL;
    cout << "Enter amount of numbers: ";
    cin >> size;
    array = new int[size];
    for (int i = 0; i < size; i++)
    {
        cin >> number;
        array[i] = number;
    }
    function3(array, size, foo);
    return 0;
}
 
template<typename int>
void    function3(int array[], int size, int(*func)())
{
    for (int i = 0; i < size; i++)
    {
        array[i] = foo(array[i]);
    }
    cout << "\nResult:" << endl;
    for (int i = 0; i < size; i++)
    {
        cout << array[i] << " ";
    }
    cout << endl;
}
 
int     foo(int number)
{
    return number * 10;
}


В результате VS выдает такие ошибки:
Ошибка C2672 "function3": не найдена соответствующая перегруженная функция
Ошибка C2783 void function3(int [],int,int (__cdecl *)(int)): не удается составить аргумент шаблон для "__formal"
Ошибка (активно) E0304 отсутствуют экземпляры перегруженная функция "function3", соответствующие списку аргументов
  • Вопрос задан
  • 911 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
В объявлении int(*)(int), а в реализации int(*func)(). Несовпадение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы