2013-12-02 6 views
-1

В abc.h файле у меня есть:как решить следующую ошибку перечисления enum?

class a 
{ 
public: 
    enum RTDFmodes { 
     verbose, 
     NONE, 
    }; 
    class b 
    { 
     friend class a; 
    public: 
     RTDFmodes _verbose_mode; 
     b(RTDFmodes verbose) 
     { 
      _verbose_mode=verbose; 
     } 
    }; 
}; 

и abc.cpp я есть:

int main() 
{ 
    a::RTDFmodes verbose; 
    a::b x(verbose); 
    return 0; 
} 

, когда я бегу ошибка приходя в «многословным используется без инициализации». любезно помогите, как удалить эту ошибку.

+0

Пожалуйста, пометьте вопрос на том языке, который вы используете, и правильно отформатируйте свой код. Вы ожидаете, что другие прочтут и поймут ваш код, поэтому больше, чем любезность, чтобы они могли это сделать. –

+1

'verbose' - это локальная переменная типа' a :: RTDFmodes'. Вы никогда не инициализируете его. – ApproachingDarknessFish

ответ

1

Вы понимаете, что используете термин 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 строго типизированные перечисления, а затем прочитать, что такое перечисления и как их использовать, поскольку вы, похоже, довольно смущены.

Смежные вопросы