error C2668: 'sqrt': Mehrdeutiger Aufruf einer überladenen Funktion



  • Hallo zusammen,

    erhalte mal wieder einen Fehler:

    1>c:\programme\ivt\src\image\imageprocessor.cpp(3592) : error C2668: 'sqrt': Mehrdeutiger Aufruf einer überladenen Funktion
    1> c:\programme\microsoft visual studio 8\vc\include\math.h(581): kann 'long double sqrt(long double)' sein
    1> c:\programme\microsoft visual studio 8\vc\include\math.h(533): oder "float sqrt(float)"
    1> c:\programme\microsoft visual studio 8\vc\include\math.h(128): oder "double sqrt(double)"
    1> bei Anpassung der Argumentliste '(const int)'
    1>c:\programme\ivt\src\image\imageprocessor.cpp(3592) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.

    Bei folgendem Befehl:

    m[offset] = int(sqrt(p * p + q * q) + 0.5);
    

    Hat jemend eine Idee?

    Vielen Dank.

    Grüße

    datatom



  • was sind p und q vom datentyp her?

    schreib einfach nen cast davor:

    m[offset] = static_cast<int>(sqrt(static_cast<double>(p*p + q*q)) + 0.5);  // 0.5 ist automatisch double
    


  • Hallo,

    Deine Parameter sind int und es gibt bei dir kein sqrt welches int entgegennimmt. Der Compiler kann sich jetzt nicht entscheiden welche der vorhandenen Varianten er nehmen soll und übelässt dir die Entscheidung. z.Bsp. so

    m[offset] = int(sqrt(double(p * p + q * q)) + 0.5);
    

Anmelden zum Antworten