Мне нужно работать в некоторых библиотеках, и независимо от того, что я делаю, я продолжаю получать следующую ошибку с этим кодом.Ошибка Передача `const` как` this` аргумент `const double` отбрасывает квалификаторы
прохождение `константный AMKO :: проблемы :: запуск 'как' this'argument из 'сопз двойной AMKO :: задачи :: :: запустить соотношение (двойной, двойной)' отбрасывает Отборочные
namespace amko { namespace problem {
launch::launch():base(0.0, 20.0, 1) {}
base_ptr launch::clone() const
{
return base_ptr(new launch(*this));
}
const double launch::ratio(const double a, const double b)
{
const double area = a*b;
const double circumference = 2*a+2*b;
const double ratio = circumference/area;
return ratio;
}
void launch::objfun_impl(fitness_vector &f, const decision_vector &xv) const
{
amko_assert(f.size() == 1 && xv.size() == get_dimension());
const double x = xv[0];
const double y = launch::ratio(x,5);
f[0] = y;
}
время следующий фрагмент кода работал просто отлично.
namespace amko { namespace problem {
initialValueProblem::initialValueProblem():base(0.0, 20.0, 1) {}
base_ptr initialValueProblem::clone() const
{
return base_ptr(new initialValueProblem(*this));
}
Eigen::VectorXd initialValueProblem::computeDerivative(const double time, const Eigen::VectorXd& state)
{
Eigen::VectorXd stateDerivative(1);
stateDerivative(0) = state(0) - std::pow(time, 2.0) + 1.0;
return stateDerivative;
}
void initialValueProblem::objfun_impl(fitness_vector &f, const decision_vector &xv) const
{
amko_assert(f.size() == 1 && xv.size() == get_dimension());
const double x = xv[0];
double intervalStart = 0.0;
double intervalEnd = 10.0;
double stepSize = 0.1;
Eigen::VectorXd initialState_;
initialState_.setZero(1);
initialState_(0) = x;
numerical_integrators::EulerIntegratorXd integrator(boost::bind(&initialValueProblem::computeDerivative,
const_cast<initialValueProblem*>(this), _1, _2), intervalStart, initialState_);
Eigen::VectorXd finalState = integrator.integrateTo(intervalEnd, stepSize);
f[0] = fabs(finalState(0) - 11009.9937484598);
}
Спасибо!
Пожалуйста, уменьшите свой код до ** минимального ** тестового чехла. –
Этот вопрос «проблема с константой» размещается ** каждый день **. Давай! – mfontanini
@fontanini: Не стесняйтесь оставлять ссылку на один из старых вопросов, и мы закроем это как дубликат. –