Überladen von Funktionen aus math.h in einer Klasse
-
Folgender code gibt erzeugt mir ein Problem das ich nicht lösen kann
(math.h ist inkludiert)
base und error sind public doubles in der klasse calccalc calc::log(const calc& x) { calc temp; temp.error = 1/x.base*x.error; temp.base = log(x.base); return temp; }
In member function 'calc calc::log(const calc&)':
error: no matching function for call to 'calc::log(const double&)'
temp.base = log(x.base);note candidate is:
note: calc calc::log(const calc&)
calc calc::log(const calc& x)note: no known conversion for argument 1 from 'const double' to 'const calc&'
Ich habe keine ahnung warum der compiler mir hier nen fehler wirft
alle ideen oder lösungsvorschläge sind sehr wilkommen
Ich hoffe nur ich habe hier keinen blöden fehler gemacht
-
Das Problem ist, das
calc::log()
vorstd::log()
aus<cmath>
gefunden wird, wenn der Compiler versuchtlog()
aufzulösen.
Schreibstd::log(x.base)
.
-
Furble Wurble schrieb:
Das Problem ist, das
calc::log()
vorstd::log()
aus<cmath>
gefunden wird, wenn der Compiler versuchtlog()
aufzulösen.
Schreibstd::log(x.base)
.Wenn du math.h so eingebunden hast:
#include <cmath>
Bei
#include <math.h>
solltest du nur ::, nicht std:: voransetzen. Danach solltest du dich eines besseren besinnen, und cmath statt math.h einbinden.
-
Ahh, vielen Dank für die schnelle Hilfe :))
-
Hilft bei sowas nicht ADl, d.h. dass man das so schreibt:
calc calc::log(const calc& x) { using std::log; // oder sogar using namespace std; calc temp; temp.error = 1/x.base*x.error; temp.base = log(x.base); return temp; }
?