Ответ 1
В С++ 11 вы можете иметь нецелые константные выражения благодаря constexpr
:
private:
static constexpr double some_double = 1.0;
Внутри заголовочного файла моего класса я пытаюсь сделать следующее и получить жалобы компилятора:
private:
static const double some_double= 1.0;
Как вы на самом деле должны это делать?
В С++ 11 вы можете иметь нецелые константные выражения благодаря 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()