Есть ли способ объявить публичный статический констант, который будет определен в исходном файле с помощью constexpr (и какая разница есть)? - PullRequest
0 голосов
/ 18 октября 2019

В моем заголовке объявлена ​​открытая статическая константа, и я определяю в исходном файле как член класса. Я хочу определить его в исходном файле, потому что я включаю и использую константу из него, и я не хочу включать в свой заголовок.

Если я использую статический constexpr в заголовке, это требуетопределение там.

header

public:
  static const double DEG_TO_RADIANS;

source

#include <math.h>

const double MyClass::DEG_TO_RADIANS = (M_PI/180.0);

Это ситуация, когда вы просто не можете использовать constexpr, это вообще имеет значение?

Почему статический констант позволяет мне не определять переменную, а статический constexpr - нет?

Редактировать: M_PI - простой пример этой ситуации.

1 Ответ

0 голосов
/ 18 октября 2019

Весь смысл constexpr в том, чтобы использовать его для значений, которые могут быть известны во время компиляции. Это не сработает, если определение находится в совершенно другом файле.

Статическая константа требует от вас определения, какой компоновщик может соединяться между различными файлами.

...