У меня есть Vector
класс. В настоящее время это выглядит так:
class Vector{
double PI = 2 * acos(0.0);
double EPSILON = 1e-4;
public:
double x,y,z;
Vector() : x(0.0),y(0.0),z(0.0) {}
Vector(double _x,double _y,double _z) : x(_x), y(_y), z(_z){}
// some more code...
Vector& operator += (const Vector &vect) {
*this = *this + vect;
return *this;
}
Vector& operator += (const double &value){
*this = *this - value;
return *this;
}
// some more operator overloading....
inline bool isNearlyEqual (const double &a,const double &b) const{
return std::abs(a - b) < EPSILON;
}
inline double radiansToDegree (const double &radians) const {
return radians * 180.0 / PI;
}
// some more code...
Теперь, когда я пытаюсь сделать две приватные переменные PI
и EPSILON
const
, тогда выдается соответствующая ошибка вокруг строк перегрузки оператора. Если я сделаю это const static
, то вызову:
function call must have a constant value in a constant expression
более acos(0.0)
. То же самое происходит, если я пытаюсь сделать это static constexpr
. Что означают эти сообщения и как я могу их обойти?