У меня есть код, который содержит const
глобальных переменных; Код должен быть расширен для поддержки параметризации, т. Е. На основе параметра, который некоторые переменные должны изменить. Бывает, что некоторые из переменных, которые необходимо изменить, являются глобальными const
.Как изменить глобальные константные переменные на переменные, которые могут быть назначены с помощью функции
file1.h
const double a = 2;
const double b = 3;
file.h наследуется несколько различных .cc
, которые используют a
и b
.
После прочтения онлайн я познакомился с ключевыми словами extern
. Поэтому, следуя некоторым рекомендациям, я сделал следующее.
1) Заявленный a
и b
в externs
в файле заголовка: file.h:
extern const double a;
extern const double b;
2) Создано file.cc
файл, в котором я использую функцию для присвоения значений a
и b
:
void setConsts(double parameter){
/* request the linkage */
extern const double a;
extern const double b;
if (parameter == 9){
a = 2 * 9;
b = 3 * 9;
}
else if (parameter == 10){
a = 2 * 10;
b = 3 * 10;
}
else{
std::cout<<"parameter not supported"<<std::endl;
Теперь, вероятно, потому, что a
и b
являются const
s я получаю:
error: read-only variable is not assignable
Что такое хороший и элегантный способ изменения глобальных const
S в глобальные переменные, которые можно определить с помощью функции, но все-таки убедиться, что они не будут изменены во время работы -время?
«* Вы не можете изменить константы. Их значение вычисляется в процессе компиляции, а не во время выполнения *» это 'constexpr' переменной, а не' const'. Рассмотрим это: 'const int a = getInt(); int getInt() {int a; scanf ("% d ', a); return a}' – PcAF
@PcAF мой плохой, извините. В любом случае ни 'const', ни' constexpr' не подходят для ситуации афер. – sx107