Ich habe ein Problem in Bezug auf explizite Spezialisierung in C++ ProgrammExplizite Spezialisierung - Template-ID passen keine Template-Deklaration
Ich möchte eine Spezialisierung für char * Typ machen, die eine Adresse an den längsten char Array zurückgibt, aber ich werden immer Fehler:
C:\Users\Olek\C++\8_1\main.cpp|6|error: template-id 'maxn<char*>' for 'char* maxn(char*)' does not match any template declaration|
C:\Users\Olek\C++\8_1\main.cpp|38|error: template-id 'maxn<char*>' for 'char* maxn(char*)' does not match any template declaration|
Hier ist der Code für das Programm
#include <iostream>
template <typename T>
T maxn(T*,int);
template <> char* maxn<char*>(char*);
const char* arr[5]={
"Witam Panstwa!",
"Jak tam dzionek?",
"Bo u mnie dobrze",
"Bardzo lubie jesc slodkie desery",
"Chociaz nie powinienem",
};
using namespace std;
int main()
{
int x[5]={1,4,6,2,-6};
double Y[4]={0.1,38.23,0.0,24.8};
cout<<maxn(x,5)<<endl;
cout<<maxn(Y,4)<<endl;
return 0;
}
template <typename T>
T maxn(T* x,int n){
T max=x[0];
for(int i=0;i<n;i++){
if(x[i]>max)
max=x[i];
}
return max;
}
template <>
char* maxn<char*>(char* ch){
return ch;
}
ich die Funktion noch nicht umgesetzt haben, aber es war declare d. Ich nehme auch an, dass es einfacher ist, Funktionsüberlastung zu verwenden, aber es ist eine Zuweisung aus einem Buch.
Vielen Dank für die Antworten im Voraus.
Welche Vorlage erwarten Sie 'template <> char * MAXN (char *);' zu spezialisieren? –
juanchopanza
maxn Vorlage, Vorlage T maxn (T * x, int n) –
IceKoldCilla
oh warte, sollte ich auch zweiten Parameter hinzufügen? (int n) ?. Es funktioniert nicht – IceKoldCilla