Template i en METODE

Tags:    c++

Jeg er med på at man kan bruge en template til en funktion sådan her:

Fold kodeboks ind/udKode 


men hvordan fungere det i en metode, der er i en klasse?

syntes ikke jeg kan få det her til at virke:

.h fil:
Fold kodeboks ind/udKode 


.cpp fil:
Fold kodeboks ind/udKode 


compileren ser ikke ud til at genkende T som en type, i .cpp filen.

Håber i kan hjælpe :D



Indlæg senest redigeret d. 28.02.2009 04:12 af Bruger #13669
6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Selvom det Robert linker til er sandt kan du godt nøjes med at lave en metode i en klasse template man behøver ikke lave hele klassen template.

du skal bare huske også at erklærer den template ved implementationen.
.cpp fil
Fold kodeboks ind/udKode 




Kan han ikke bare gøre følgende.

header1.h:
Fold kodeboks ind/udKode 


test.cpp:
Fold kodeboks ind/udKode 


Men det er måske det samme som Nørden?



Indlæg senest redigeret d. 28.02.2009 16:04 af Bruger #6559
Robert: Jeg skal kalde den samme metode, i den samme klasse flere gange, men med forskellige template argumenter, ser ikke ud til at man kan det på den måde.

Nørden: Altså templaten skal erklæres begge steder?

Martin: Det er det jeg selv har prøvet, og ikke kan få til at virke. De kan selvfølgelig godt være at det er noget andet i mit program der fucker up. Compileren klager over at der skal nævnes en type for T i .cpp filen. Jeg går ud fra det er fordi den ikke kan identificere T som en type.



Indlæg senest redigeret d. 28.02.2009 18:53 af Bruger #13669
Du skal have implementationen af template funktionen/metoden i .h filen (eller i .cpp filen inden den bruges).
Det er ikke som med normale funktioner, hvor man kan have en prototype i .h filen og implementationen i en .cpp fil.



Det var hvad jeg mente ja og som bertel siger skal du have implementationen i .h filen også, du burde dog kunne lægge den i en cpp fil og så include den fra din h fil i bunden.
Fold kodeboks ind/udKode 




t