Я пытаюсь написать сферическую функцию Бесселя в C ++ и использую
#include <boost/math/special_functions/bessel.hpp>
а также sph_bessel(v,x)
в моем коде, но произошла ошибка, скажем, что это не объявлено в этой области. Я компилирую с g ++ test.cpp. Пожалуйста, помогите мне.
#include <cmath>
#include <iostream>
#include <boost/math/special_functions/bessel.hpp>
using namespace std;
int main()
{
// spot check for n == 1
double x = 1.2345;
cout << "j_1(" << x << ") = " << sph_bessel(1, x) << '\n';
}
скомпилируйте код с помощью:
g++ test.cpp
и дать эту ошибку:
error: ‘sph_bessel’ was not declared in this scope
cout << "j_1(" << x << ") = " << sph_bessel(1, x) << '\n';
a.cpp:9:38: note: suggested alternative:
In file included from a.cpp:3:0:
/usr/include/boost/math/special_functions/bessel.hpp:544:79: note: ‘boost::math::sph_bessel’
ename detail::bessel_traits<T, T, policies::policy<> >::result_type sph_bessel(unsigned v, T x)
Сообщение об ошибке говорит вам, что делать:
a.cpp:9:38: note: suggested alternative:
‘boost::math::sph_bessel’
поэтому код должен быть:
cout << "j_1(" << x << ") = " << boost::math::sph_bessel(1, x) << '\n';
или вы можете добавить:
using namespace boost::math;
но это настоятельно не рекомендуется Почему «использование пространства имен std» считается плохой практикой?
Поэтому я бы вместо этого предложил:
namespace bmath = boost::math;
Тогда вместо boost::math::sph_bessel(1, x)
Ты можешь написать: bmath::sph_bessel(1, x)
,
Других решений пока нет …