Wskaźnik do tablicy jako parametr

0

Witam.
Musze napisać szablon funkcji, która będzie przyjmować 4 parametry:
• wskaźnik,
• odnośnik,
• wskaźnik do tablicy,
• wskaźnik do funkcji.

Napisałem coś takiego:

template< class Typ >
Typ funkcja(Typ *a, Typ &b, Typ (*c)[4], Typ d(int, int)) { 
    return "hello world";
}

i wywołanie:

int tab[] = {10, 12, 15, 8};
int *a = &tab[0];
int &b = tab[1];
int (*c)[4] = &tab; 
int (*d)(int, int) = &dodaj;
cout << funkcja(a, b, c, d) << endl; 

Problem jest przy trzecim parametrze. Co zrobić, żeby w szablonie nie trzeba było podawać rozmiaru tablicy tzn. Typ (*c)[4]? Bez podania rozmiaru kompilator wyrzuca błąd. Z góry dziękuję za rady :)

Pozdrawiam.

0

wskaźnik na dynamiczną tablicę np:

int **tab;
0

możesz przekazać wskaźnik na pierwszy element tablicy ale i tak musisz jakoś przekazać jej rozmiar jeśli chcesz jej używać (albo jako dodatkowy parametr albo ustal wielkość przez stałą globalną)

0
 Typ funkcja(Typ rozmiar, Typ *a, Typ &b, Typ (*c)[rozmiar], Typ d(Typ, Typ)) { 

jak próbuję zrobić dodatkowy parametr z rozmiarem tablicy to kompilator wypluwa, że rozmiar is not declared...

0

bo źle to robisz. Przekaż sam wskaźnik na pierwszy element tablicy (czyli na typ jaki ona przechowuje), a jako dodatkowy parametr przekaż rozmiar. Wewnątrz funkcji wykorzystaj arytmetykę wskaźników i sprawdzaj tylko z rozmiarem czy nie wychodzi poza zakres.

1 użytkowników online, w tym zalogowanych: 0, gości: 1