Tôi đang cố gắng viết chuyên môn mẫu cho hàm trả về giá trị lớn nhất của một mảng giá trị số (phiên bản chung) hoặc chuỗi c dài nhất của một chuỗi các chuỗi c (chuyên môn). Nếu tôi không sử dụng const-ness, các prototype nguyên mẫu của tôi trông giống như hình minh họaSử dụng const char ** với Chuyên môn mẫu
template <typename T>
T maxn(T* my_Tptr, unsigned int n);
template <>
char* maxn <char*> (char** my_cstrings, unsigned int n);
và mã của tôi biên dịch.
Tuy nhiên, nếu tôi cố gắng sử dụng const-Ness, nguyên mẫu chức năng của tôi trông như thế này,
template <typename T>
T maxn(const T* my_Tptr, unsigned int n);
template <>
char* maxn <char*> (const char** my_cstrings, unsigned int n);
mã của tôi không biên dịch, và trình biên dịch (gcc) in lỗi này:
lỗi : template-id 'maxn' cho 'char * maxn (const char **, unsigned int)' không khớp với bất kỳ khai báo mẫu nào.
Tôi sẽ làm gì sai?
Không phải là tôi quan tâm, nhưng tôi thực sự tự hỏi tại sao bạn cần xây dựng trong mã nguồn của bạn? – evilruff
'mẫu <> char const * maxn (char const * const *, unsigned int);' hoặc 'mẫu <> char * maxn (char * const *, unsigned int);' –
dyp