【发布时间】:2011-11-28 16:39:19
【问题描述】:
我之前遇到过this 的问题,但现在它可以正常工作了。
现在我遇到了以下问题。在使用相同的函数调用 boost::bisect 之前,我需要将值绑定到成员函数中。我找到了很好的tutorial 并且我已经关注了它,但似乎我仍然做错了什么。
起初我创建了测试类,我在其中进行了以下工作:
std::pair<double, double> result = bisect(&Func, 0.0, 1.0, TerminationCondition());
double root = (result.first + result.second) / 2;
在那之后,我添加了绑定“我认为它可以工作的即时”
std::pair<double, double> result = bisect(boost::bind(&CLASS::Function,this, _1), 0.0, 1.000000, TerminationCondition());
结果是一个错误。错误:在抛出 'boost::exception_detail::clone_impl >' 的实例后调用终止 what():函数 boost::math::tools::bisect 中的错误:boost::math::tools 中的符号没有变化: :bisect,要么找不到根,要么区间有多个根(f(min) = -0.0032916729090909091)。
无论如何,这里的 class::function 由于某种原因不能作为具有绑定的成员函数工作。我以非会员身份对其进行了测试,并且可以正常工作
double CLASS::Function(double c)
{
/* values: m_a, m_b, m_c, m_d, and m_minus are located in .h file */
normal norm;
double temp = m_d*sqrt(c);
double total = ((1-boost::math::pdf(norm,(m_a*c+m_b)/temp))-(1 - m_c)+boost::math::pdf(norm,(m_a*c+m_b)/temp));
return (total - m_minus);
}
【问题讨论】:
标签: c++ boost binding bisection