Mam problem z użyciem kilku wskaźników do przeciążonych funkcji. Załóżmy że mam dwie funkcje sortujące dla trzech typów danych: tablica double, wektor double i wektor int. Funkcje, nazwijmy je sort1 i sort są zadeklarowane dla tablicy i umieszczone w szablonie dla wektora:
typedef void(*wskazniktab)(double*, int);
typedef void(*wskaznik)(vector <double> &, int);
typedef void(*wskaznikint)(vector <int> &, int);
void sort1 (double tab[], int i);
void sort2 (double tab[], int i);
template <typename Item>
void sort1(vector <Item> &tab, int i);
template <typename Item>
void sort2(vector <Item> &tab, int i);
Funkcje:
void sortuj(wskaznik funkcje[], vector <double> &dane, int i){
funkcje[0](dane, i);
funkcje[1](dane, i);
}
void sortuj(wskazniktab funkcje[], double dane[], int i){
funkcje[0](dane, i);
funkcje[1](dane, i);
}
W mainie mam stworzone tablice z nazwami funkcji do wywołania:
wskaznik nazwy[2]={sort1, sort2};
wskazniktab nazwytab[2]={sort1, sort2};
Dopóki napisałem fragment działający na tablicy, wszystko było w porządku. Wystarczyło jednak dopisać część dla wektora double i dostaję taki błąd:
[Error] cannot convert 'void (**)(std::vector<double>&, int, int)' to 'wskaznik {aka void (*)(std::vector<double>&, int, int)}' in initialization
Nie potrafię znaleźć błędu, będę wdzięczny za pomoc.