Если функция доступа (в данном случае main
) не является членом или friend
вашего класса Car
, то компилятор прав, говоря, что private
member width
запрещен вэтот контекст.
Если подумать, если кто-то, кто сможет создать Car
, сможет получить доступ к его private
членам, то конфиденциальность не будет иметь большого значения.Вы создаете конструктор public
, чтобы разрешить создание объекта, но скрываете элементы данных созданного объекта от таких пользователей, чтобы правильно их инкапсулировать.Вы ограничиваете манипулирование внутренними элементами private
класса тем, что разрешено легальным использованием public
или protected
членов класса.