Плюсы и минусы использования вложенных классов C ++ и перечислений?

Каковы плюсы и минусы использования вложенных общедоступных классов и перечислений C ++? Например, предположим, у вас есть класс с именемprinter, и этот класс также хранит информацию о выходных лотках, вы можете иметь:

class printer
{
public:
    std::string name_;

    enum TYPE
    {
        TYPE_LOCAL,
        TYPE_NETWORK,
    };

    class output_tray
    {
        ...
    };
    ...
};

printer prn;
printer::TYPE type;
printer::output_tray tray;

В качестве альтернативы:

class printer
{
public:
    std::string name_;
    ...
};

enum PRINTER_TYPE
{
    PRINTER_TYPE_LOCAL,
    PRINTER_TYPE_NETWORK,
};

class output_tray
{
    ...
};

printer prn;
PRINTER_TYPE type;
output_tray tray;

Я вижу преимущества вложения частных перечислений / классов, но когда дело касается общедоступных, офис делится - кажется, это больше выбор стиля.

Итак, что вы предпочитаете и почему?

Ответы на вопрос(13)

Ваш ответ на вопрос