Я считал, что использование директивы не поощряется в C++, говорящем никогда помещаемые директивы использования в заголовочных файлах. Почему похож на это это? Какая-либо подсказка для меня?
Спасибо!
использование пространства имен x;
- очень плохая идея, поскольку вы понятия не имеете , какие имена импортируете, даже со стандартной библиотекой.
Однако: с использованием std :: cout;
и аналогичные операторы - очень хорошая идея, потому что они явно импортируют символы и делают код более читаемым (хотя это все еще может быть хорошая идея поместить их в глобальную область видимости в файлах заголовков).
Аналогично нет объявлению статических переменных в заголовочных файлах. Добавление оператора использования в заголовочных файлах приведет к тому, что пространство имён появится в .cpp-файлах, включающих заголовочный файл. В этом нет необходимости. В худшем случае, вам может потребоваться изменить имена некоторых переменных или функций в .cpp, чтобы избежать конфликтов именования
.] Если вы говорите о директиве 'using', то причина отказа от ее использования заключается в том, что если вы скажете [
] [][], используя пространство имен std;[
][
]в заголовочном файле, то все файлы, #включая этот заголовок, будут вынуждены использовать это пространство имен, и это может вызвать проблемы. [
]] Потому что это может нарушить рабочий код при попытке добавить ваш заголовок, если ваше пространство имен заголовка попирает другое пространство имен, определенное в работающем вставном коде.[
].