You can overload functions across namespaces. For example:
// Original X.h: f(int); // Original Y.h: f(char); // Original program.c: #include "X.h" #include "Y.h" void z() { f('a'); // calls f(char) from Y.h }
Namespaces can be introduced to the previous example without drastically changing the source code.
// New X.h: namespace X { f(int); } // New Y.h: namespace Y { f(char); } // New program.c: #include "X.h" #include "Y.h" using namespace X; using namespace Y; void z() { f('a'); // calls f() from Y.h }
In program.c, function void z() calls function f(), which is a member of namespace Y. If you place the using directives in the header files, the source code for program.c remains unchanged.
Related References
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.