Вы должны инициализировать const
членов класса в списке инициализаторов .Вот полный пример (см. online ):
class myClass {
private:
const int ID;
public:
myClass(const int id) : ID(id) {
// ^^^^^^
}
};
int main() {
myClass x(42);
}
Проблема в том, что инициализация в теле конструктора слишком поздняя, все члены области видимости класса будут пытаться инициализироваться перед кодомв теле выполняется, и инициализация по умолчанию для переменной члена класса const
отсутствует.
Если вы действительно хотите инициализацию по умолчанию, вы можете сделать это так (пример online ):
class myClass {
private:
const int ID = -42; // <<<
public:
myClass() = default; // <<<
myClass(const int id) : ID(id) {
}
};
int main() {
myClass x;
}