Я пытаюсь использовать шаблонный функтор (ascendingCompare) для сравнения двух значений и использовать его в шаблонной функции (Сортировка), которая сортирует массив
Функтор
template<typename Q>
class ascendingCompare
{
public:
bool operator () (const Q &first, const Q &second)
{
if (first < second)
return true;
else
return false;
}
};
Функция сортировки вместе с функциейдля обмена значениями
template <typename Q>
void Swap(Q &first, Q &second)
{
Q temp = first;
first = second;
second = temp;
}
template <typename W>
void sortAscend(W *arr, int size)
{
for (int i = 0; i < size - 1; i++)
for (int j = 0; j < size - 1 - i; j++)
if (ascendingCompare<W>( arr[j + 1], arr[j]) )
Swap(arr[j + 1], arr[j]);
/*if (arr[j + 1] < arr[j])
Swap(arr[j + 1], arr[j]);*/
}
Часть, в которой используется функтор
int *sorted_array = new int[array_size];
for (int counter = 0; counter < array_size; counter++)
{
sorted_array[counter] = rand() % 100;
cout << setw(2) << sorted_array[counter] << " ";
}
sortAscend(sorted_array, array_size);
Таким образом, компилятор выдает эту ошибку C2440: Невозможно преобразовать из «списка инициализатора» в «ascendingCompare»