tags:

views:

60

answers:

2

Someone once hinted that doing this in a header file is not advised:

using namespace std;

Why is it not advised?

+6  A: 

Because it forces anyone who uses your header file to bring the std namespace into global scope. This could be a problem if they have a class that has the same name as one of the standard library classes.

Eric Petroelje
A: 

If the file gets included elsewhere the compilation unit will implicitely get the using directive. This can lead to confusing errors when names overlap.

pmr
could it cause linker errors like this: error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in tools.lib(Exception.obj)??
Tony
@Tony: You should add this to the question. It would be easier to read with proper formatting.
pmr