Я гуглил const
+ extern
в интернете, но, похоже, на мой вопрос не очень хороший ответ.
const
само по себе означает внутреннюю связь, но если я хочу поделиться константной переменной среди единиц компиляции. extern
лучший выбор?
Общее решение будет:
//g.h
extern const int MAX;
// g.c
extern const int MAX = 3;
Однако, у этого решения есть недостаток, как показано ниже:
// Say, I want to use this MAX in the same header file.
// g.h
extern const int MAX;
class AClass
{
public:
AClass (): i(MAX){}
private:
int i;
};
Компилятор будет жаловаться как: «ошибка C2057: ожидаемое постоянное выражение».
Есть ли решение для этого?