Вы понимаете, что используете термин verbose
в трех разных местах, не так ли? Значение перечисления verbose
совпадает с именем в качестве аргумента вашей B функция, так же, как ваш экземпляр :: RTDFmodes в основной():
enum RTDFmodes {
verbose, // constant enum value
и
b(RTDFmodes verbose) // local variable in b() named verbose
и
a::RTDFmodes verbose; // local variable in main() named verbose
Если вы хотите, чтобы подробные данные указывали значение перечисления, вам необходимо изменить два других:
b(RTDFmodes mode) // the argument is now named mode and can contain the value 'verbose'
a::RTDFmodes mode = a::RTDFmodes::verbose; // mode contains the value 'verbose'
Вы также запятая после NONE
, но ничего после него:
enum RTDFmodes {
verbose,
NONE, // Right here
};
Что касается вашей конкретной ошибки, то verbose
вы объявили в основной никогда не инициализируется перед вами передайте его конструктору b, который присваивает ему свой член данных.
В будущем я бы предложил сначала переключиться на C++ 11 строго типизированные перечисления, а затем прочитать, что такое перечисления и как их использовать, поскольку вы, похоже, довольно смущены.
Пожалуйста, пометьте вопрос на том языке, который вы используете, и правильно отформатируйте свой код. Вы ожидаете, что другие прочтут и поймут ваш код, поэтому больше, чем любезность, чтобы они могли это сделать. –
'verbose' - это локальная переменная типа' a :: RTDFmodes'. Вы никогда не инициализируете его. – ApproachingDarknessFish