Wpis z mikrobloga

Mirki, mam problem z deklaracją funkcji w następującym zadaniu:

Napisz szablon funkcji maxn() pobierającej jako parametry tablicę typu T oraz liczbę elementów tej tablicy, zwracającej

największy element tablicy.

Przetestuj w programie 5-elementową tablicę wartości int i 4-elementową tablicę double.

Program powinien korzystać ze specjalizacji przyjmującej jako parametr tablicę typu char,

zwracającej adres najdłuższego napisu.

Jeśli jest kilka najdłuższych łańcuchów funkcja pownna zwracać adres pierwszego z nich.

Sprawdź specjalizację z tablicą pięciu łańcuchów.


Napisałem cały program i jest problem z deklaracją specjalizacji:

template T maxn(T arr, int arrSize); // (dla int, double)
template <> const char * maxn(const char * arr[], int arrSize); // (dla char*)

Wyświetla się błąd:

error: template-id 'maxn<>' for 'const char* maxn(const char**, int)' does not match any template declaration


Program działa przy użyciu
const char * maxn(const char * arr[], int arrSize)
ale zgodnie z treścią zadania ma zostać użyta specjalizacja, a nie przeciążanie funkcji.

Cały program:


#cpp #naukaprogramowania
  • 7
  • Odpowiedz
@Golem_Piotr @Japkoo: Dziękuję za pomoc, program działa, ale dlaczego template z jawnie określonym wskaźnikiem nie dopasowywuje się do template z typename, który służy (w tym przypadku) do określenia wskaźnika typu prostego lub obiektu i ma tą samą nazwę?
  • Odpowiedz