Fehler C2064
-
Hi,
weiß jemand warum diese Zeile
std::pair<double, double> a = boost::math::tools::bisect(boost::bind(static_cast<double(funktion::*)(double)>(&funktion::differentailquotient), fct, std::placeholders::_1), (i - step), (i + step),0.0001 );
diesen Fehler hervorruft?
Fehler C2064 Ausdruck ergibt keine Funktion, die 2 Argumente übernimmt
Die Funktion "funktion::differentialquotient" liegt in drei Formen vor
double differentialquotient(double x_0, double x); static double differentialquotient(double x_0, double x,std::string &string); double differentialquotient(double x_0);
Verwendet werden soll
double differentialquotient(double x_0);
-
axels. schrieb:
Hi,
weiß jemand warum diese Zeile
std::pair<double, double> a = boost::math::tools::bisect(boost::bind(static_cast<double(funktion::*)(double)>(&funktion::differentailquotient), fct, std::placeholders::_1), (i - step), (i + step),0.0001 );
diesen Fehler hervorruft?
Fehler C2064 Ausdruck ergibt keine Funktion, die 2 Argumente übernimmt
Der gezeigte Code ist nicht minimal.
Tritt der Fehler inboost::bind(static_cast<double(funktion::*)(double)>(&funktion::differentailquotient), fct, std::placeholders::_1);
ebenfalls auf? Nebenbei habe ich gewisse Zweifel, dass boost::bind und std::placeholder zusammen arbeiten können. Wahrscheinlich solltest du auf bind sowieso verzichten, oder jedenfalls entweder boost::bind+boost::placeholders oder std::bind+std::placeholders verwenden.
-
axels. schrieb:
std::pair<double, double> a = boost::math::tools::bisect(boost::bind(static_cast<double(funktion::*)(double)>(&funktion::differentailquotient), fct, std::placeholders::_1), (i - step), (i + step),0.0001 );
"differentailquotient"?
-
In
boost::bind(static_cast<double(funktion::*)(double)>(&funktion::differentailquotient), fct, std::placeholders::_1);
lag tatsächlich nicht der Fehler.
Es war das letzte Argument in der Zeile
boost::math::tools::bisect(boost::bind(static_cast<double(funktion::*)(double)>(&funktion::differentialquotient), fct, std::placeholders::_1), (i - step), (i + step),0.0001 );
Diese gibt nämlich die Tolleranz an. Dort darf man nicht nur einen Wert übergeben sondern einen Funktor.