По сути, вы этого не делаете.После того, как вы включили файл, все сущности из этого файла будут доступны для оставшейся части модуля перевода.
Идиоматический способ скрыть такого рода зависимость состоит в том, чтобы полагаться на идиому pimpl.
Тем не менее, почему код, использующий Foo
, заботится о том, чтобы <string>
был включен?Все его сущности находятся в пространстве имен std
(хорошо, за исключением того, что <string>
может включать некоторые заголовки стандартной библиотеки C, но обычно вы должны кодировать с ожиданием, что заголовки стандартной библиотеки C могут быть включены любым изЗаголовки стандартной библиотеки C ++).