2017-02-23 20 views
2

Резюмируя У меня есть код, как этотЕсть ли эффективный и правильный способ поместить очень большие публичные списки классов ниже общедоступных методов, которые используют их, чтобы сделать код более чистым?

class c { 
public: 
    enum enumType { .... }; // huge! 
    int function(enumType e); 
private: 
    ...  
} 

код работает отлично, но я хотел бы сделать его немного более чистым. Перечисление состоит из двух страниц, что делает код сложным для следующего парня. Думаю, я мог бы поместить его в свой собственный заголовочный файл, который, как я думаю, является лучшим решением. Я просто задавался вопросом, был ли более элегантный способ сделать это без внешнего файла?

Спасибо,

ответ

2

Одним из возможных вариантов является использование классов перечислений, которые могут быть вперед объявленную:

class Foo { 

    enum class bar; 

    int foo(bar); 
}; 

enum class Foo::bar {baz, blah}; 

int Foo::foo(bar b) 
{ 
    return b == bar::baz ? 1:0; 
} 

Конечно, с помощью классов перечислений означает, что некоторые дополнительные печатать. Но, как дополнительный бонус, вы получаете лучшую безопасность типов.

+1

Непересекающиеся перечисления также могут быть объявлены вперед, но вы должны указать базовый тип. В любом случае для этого требуется C++ 11. – Brian

+0

Я не знал, что смогу это сделать. Это должно работать отлично. Благодаря! – mreff555

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