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);
    

  • Mod

    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 in

    boost::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.


Log in to reply