Forum: mall problem

Forum huvudsida -> Programmering -> mall problem

Sidor: 1

Till botten

Gnerf 20:18 - 6:e Januari 2009 | Post #1
Medlem
Inlägg: 25


Skicka PM
edit: (upptäckte precis efter jag postat särskrivningen i titelnSmiley )

Får ett problem när jag försöker kompilera följande kod:
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <typename T>
  6. T maxn(T vekt[], T size)
  7. {
  8. T tempBig = vekt[0];
  9.  
  10. int i = 0;
  11.  
  12. while(i < size)
  13. {
  14. i++;
  15.  
  16. if(vekt[i] > tempBig)
  17. {
  18.  
  19. tempBig = vekt[i];
  20. }
  21. }
  22.  
  23. return tempBig;
  24. }
  25.  
  26. template <> char* maxn(char vekt[], int size)
  27. {
  28. int theLongest = strlen(vekt[0]);
  29. int i = 0;
  30.  
  31. while(i < ant)
  32. {
  33. i++;
  34. if(theLongest > strlen(vekt[i])
  35. {
  36. theLongest = strlen(vekt[i]);
  37. }
  38. }
  39.  
  40. return &theLongest;
  41. }
  42.  
  43.  
  44. int main()
  45. {
  46. char *CharPtrVektor[5] = {"A", "AB", "ABC", "ABCD", "ABCDE"};
  47. int IntVektor[6] = {1, 2, 3, 4, 5, 6};
  48. double DoubleVektor[5] = {1.1, 2.2, 3.3, 4.4, 5.5};
  49.  
  50. double arf = 5;
  51. int barf = 6;
  52. int sarf = 5;
  53.  
  54. cout << maxn(DoubleVektor, arf) << endl;
  55. cout << maxn(IntVektor, barf) << endl;
  56. cout << maxn(CharPtrVektor, sarf) << endl;
  57.  
  58. return 0;
  59. }



uppgiften till koden var att jag skulle skapa en mall för att ta emot två sorters vektorer, och sen skapa en specialisering för att ta emot en vektor av pekare till char. Allting verkar funka bra förutom att den klagar på följande:


vningarmain.cpp|27|error: template-id `maxn<>' for `char* maxn(char*, int)' does not match any template declaration

vningarmain.cpp|27|error: invalid function declaration|

vningarmain.cpp|55|error: no matching function for call to `maxn(char*[5], int&)'|

uppenbarligen verkar jag ha gjort något fel med specialiseringen, men jag kan inte hitta vad. Hjälp är väldigt uppskattat.

(om ni skulle se några övriga fel med koden så säg gärna till)



-------------------------
Ingen signatur!

Senast redigerad 20:21 - 6:e Januari 2009


InDigo176 23:01 - 6:e Januari 2009 | Post #2
Medlem
Inlägg: 72


Skicka PM
Bara ett litet tips:

  1. int i = 0;
  2.  
  3. while(i < size)
  4. {
  5. i++;
  6.  
  7. if(vekt[i] > tempBig)
  8. {
  9.  
  10. tempBig = vekt[i];
  11. }
  12. }

Kan bytas ut mot:
  1. int i;
  2.  
  3. for(i = 0; i < size; i++)
  4. {
  5. if(vekt[i] > tempBig)
  6. {
  7.  
  8. tempBig = vekt[i];
  9. }
  10. }


-------------------------
Sebban



Slash 03:32 - 7:e Januari 2009 | Post #3
Medlem
Inlägg: 141


Skicka PM
Om man kollar på resten av koden så ser det ut som att rad 26 bör vara:
  1. template <> char* maxn(char* vekt[], int size)


Alltså en char* vekt[].

Sedan rad 5 och 6:
  1. template <typename T>
  2. T maxn(T vekt[], int size) // <-- int size istället för T size


Hoppas det lättar din börda någotSmiley

-------------------------
Ingen sigantur!



Sidor: 1

Forum huvudsida -> Programmering -> mall problem
Atom feed

Du får inte posta i den här tråden | Till toppen