Статические члены с плавающей точкой должны быть определены и инициализированы в исходном файле. Правило одного определения запрещает определение за пределами блока class {}
в заголовке, и только встроенные элементы данных могут быть инициализированы внутри блока class {}
.
Это также прискорбно, поскольку, будучи алгебраическим значением, наличие непосредственного значения под рукой может быть полезно для оптимизации, а не для загрузки из глобальной переменной. (Разница, вероятно, будет несущественной.)
Хотя есть решение!
class Shape
{
public:
static double pi()
{ return 3.14159265; }
private:
double originX;
double originY;
};
Определения встроенных функций, включая статические, разрешены внутри блока class{}
.
Также я рекомендую использовать M_PI
из <math.h>
, который вы также должны получить из <cmath>
.