Если ваш конструктор имеет следующую строку кода, дословно:
GameStates enumGameState = Ready;
Тогда вы только что создали локальную переменную enumGameState
в вашем методе конструктора иинициализировал это.Он выходит из области видимости, как только конструктор завершен, и его значение теряется.
Предположительно, у вас также есть член переменная enumGameState
, значение которой неинициализировано, поэтому ваш switch
оператор выполняется с поддельными значениями.
Создание локальной переменной с тем же именем, что и у переменной-члена, является примером shadowing в C ++ и часто указывает на ошибку.По этой причине некоторые компиляторы (например, GCC) могут отображать предупреждение, если вы скрываете переменную;подробности см. в этом ответе .