Какова причина для класса Enum не следовать частному правилу классов C ++ по умолчаниюC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Какова причина для класса Enum не следовать частному правилу классов C ++ по умолчанию

Сообщение Anonymous »

Поскольку C ++ 11, у нас была возможность использовать перечисления в области

Код: Выделить всё

enum struct MyScopedEnum
{
True = 1,
False = 0
};
< /code>
или < /p>
enum class MyScopedEnum
{
True = 1,
False = 0
};
Тем не менее, в отличие от обычного класса и struct , где участники являются частными по умолчанию для класса и по умолчанию для struct , Обзорные перечисления делают свои перечисления публичными независимо от того, используем ли мы Enum class или enum struct .
Это, кажется, нарушает установленное соглашение, которое класс подразумевает более строгий контроль доступа, чем struct . Учитывая, что перечисленные переводы не допускают явных спецификаторов доступа (т. Е. Public: внутри них недействительна), что является причиной обновления перечислений по умолчанию по умолчанию, а не следуя установленному классу и struct Поведение? < /p>
Хороший вариант использования для частного перечисления - это добавление других классов в качестве друзей. В некоторых структурах/двигателях (например, нереальном двигателе) только глобально объявленные перечисления подвергаются воздействию редактора/сценария. В этих случаях было бы здорово ограничить доступ перечисления.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -rule-of-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»