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 übernimmtDie 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 übernimmtDer 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.