Em todos os nossos cursos C ++, todos os professores sempre colocam using namespace std;logo após os #includes em seus .harquivos. Isso me parece perigoso desde então, ao incluir aquele cabeçalho em outro programa, irei obter o namespace importado para o meu programa, talvez sem perceber, pretender ou desejar (a inclusão do cabeçalho pode ser profundamente aninhada).
Portanto, minha pergunta é dupla: Estou certo de que using namespacenão deve ser usado em arquivos de cabeçalho e / ou há alguma maneira de desfazê-lo, algo como:
//header.h
using namespace std {
.
.
.
}
Mais uma pergunta na mesma linha: um arquivo de cabeçalho deve conter #includetodos os cabeçalhos de que seu .cpparquivo correspondente precisa, apenas aqueles que são necessários para as definições de cabeçalho e deixar o resto do .cpparquivo #include, ou nenhum e declarar tudo o que precisa extern?
O raciocínio por trás da pergunta é o mesmo acima: Não quero surpresas ao incluir .harquivos.
Além disso, se eu estiver certo, isso é um erro comum? Quero dizer, na programação do mundo real e em projetos "reais" por aí.
Obrigado.
using namespacedeclarações, poderá usar o nome totalmente qualificado para resolver o problema.