В файле заголовка моего класса я пробую следующее и получаю жалобы компилятора:
private: static const double some_double= 1.0;
Как вы на самом деле должны это делать?
В C ++ 11 вы можете иметь нецелые константные выражения благодаря constexpr:
constexpr
private: static constexpr double some_double = 1.0;
Объявите его в заголовке и инициализируйте в одном модуле компиляции (.cpp для класса разумно).
//my_class.hpp private: static const double some_double; //my_class.cpp const double my_class::some_double = 1.0;
Я решил эту проблему, выполнив следующее:
//my_class.hpp const double my_double() const {return 0.12345;} //in use double some_double = my_class::my_double();
Я получил идею от
math::pi()