Em todos os nossos cursos C ++, todos os professores sempre colocam using namespace std;
logo após os #include
s em seus .h
arquivos. 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 namespace
nã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 #include
todos os cabeçalhos de que seu .cpp
arquivo correspondente precisa, apenas aqueles que são necessários para as definições de cabeçalho e deixar o resto do .cpp
arquivo #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 .h
arquivos.
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 namespace
declarações, poderá usar o nome totalmente qualificado para resolver o problema.