Specializace šablony – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Specializace šablony – C / C++ – Fórum – Programujte.comSpecializace šablony – C / C++ – Fórum – Programujte.com

 

t
~ Anonymní uživatel
21 příspěvků
29. 9. 2010   #1
-
0
-

Mám problém s programovacím cvičením v Mistrovství v C++. Zadání je vytvořit šablonu funkce maxn, která přijímá jako parametry pole typu T a počet prvků pole a navrací největší prvek. Tuto část jsem ještě zvládla. Dále se má vytvořit specializace, která přijímá pole ukazatelů na char a počet ukazatelů a navrací největší řetězec.

#include <iostream>

using namespace std;

template <class T>
T maxn(const T [], int);

template <>
char* maxn(const char* p[], int n);

int main()
{
return 0;
}

template <class T>
T maxn(const T p[], int n)
{
T max;
for (int i=0; i < n; i++)
{
if (i==0 || p[i] > max)
max = p[i];
}
return max;
}

template <>
char* maxn(const char* p[], int n)
{return &(p[0]);}


Program mi vyhazuje chybu
 template-id `maxn<>' for `char* maxn(const char**, int)' does not match any template declaration

na řádcíh 8 a 29, tedy
char* maxn(const char* p[], int n)

a ještě
invalid function declaration 

také na řádku 29.

V čem dělám chybu?

Nahlásit jako SPAM
IP: 89.102.184.–
t
~ Anonymní uživatel
21 příspěvků
29. 9. 2010   #2
-
0
-

Teď jsem přišla na jednu chybu, a to na posledním řádku mám špatnou návratovou hodnotu, správně by mělo být jen p[0]. To ale stále nic nemění na chybových hláškách.
Ale pokud oddělám všechny const kvalifikátory, program funguje (po odstranění té první zmíněné chyby), tudíž někde v tomto bude zakopaný pes...

Nahlásit jako SPAM
IP: 89.102.184.–
t
~ Anonymní uživatel
21 příspěvků
29. 9. 2010   #3
-
0
-

A mám to:) const patří za char *, tedy char * const p[]. Omlouvám se za zbytečné téma, můžete ho smazat.

Nahlásit jako SPAM
IP: 89.102.184.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 92 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý