Avatar billede tosssen Nybegynder
06. august 2003 - 23:07 Der er 6 kommentarer og
1 løsning

Best conversion problem

Jeg sidder og lejer lidt med templates og ifølge min bog skulle nedenstående overload være muligt:

template <typename T>
T calcSum(T arr[], int size); //A

template <typename T>
T calcSum(T* arr[], int size); //B

Men det virker ikke når jeg kalder funktionen med et array af double*. Compileren burde da kunne vælge B som best conversion ikke? Hvad går der galt?

Jeg bruger i øvrigt MSVS .NET
Avatar billede bertelbrander Novice
07. august 2003 - 23:34 #1
Jeg lavede følgende lille test-program:
<code>
#include <stdio.h>

template <typename T>
T calcSum(T arr[], int size)
{
  T result = 0;
  int i;
  for(i = 0; i < size; i++)
    result += arr[i];

  return result;
}

template <typename T>
T calcSum(T* arr[], int size)
{
  T result = 0;
  int i;
  for(i = 0; i < size; i++)
    result += *arr[i];

  return result;
}

int main(void)
{
  double *x[2];
  double a = 12.34, b = 43.21;
  x[0] = &a;
  x[1] = &b;
  double r = calcSum(x, 2);

  printf("Result: %f\n", r);

  return 0;
}
</code>
Hverken gcc (cygwin) eller BorlandC havde problemer med det, men MS Visual C++ 6.0 kommer med den fejl du nævner.
Hvad kan man lære af det?
Avatar billede tosssen Nybegynder
08. august 2003 - 08:15 #2
Tja, man må jo finde sig i at microsofts compiler ikke helt følger den nyeste standard hvad ovetstående angår ;-)
Avatar billede pjakobse Nybegynder
09. august 2003 - 20:40 #3
Ovenstående eksempel virker også med MSVS .NET 2003
Avatar billede tosssen Nybegynder
09. august 2003 - 20:44 #4
Hvordan kan jeg opgradere til MSVS .NET 2003?
Avatar billede tosssen Nybegynder
09. august 2003 - 21:27 #5
Øv det ser ud til det ikke kan lade sig gøre når man som jeg bruger academic versionen. Så må jeg jo overveje om det er 895 kr. værd at købe 2003-versionen bare for at løse ovenstående problem ;-)
Avatar billede tosssen Nybegynder
14. august 2003 - 09:27 #6
Jamen I skal da have 7,5 point hver for at teste det med jeres compilere, så vi kan få spørgsmålet lukket ;-)
Avatar billede tosssen Nybegynder
08. september 2003 - 23:04 #7
Ok - husk det til næste gang, så får I lidt ekstra der ;-) Jeg vil mene det er på sin plads at lukke spg'et nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester