複数のネーム・スペースにまたがって関数を多重定義することができます。次に例を示します。
// 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 }
ソース・コードを大幅に変更することなく、ネーム・スペースを上記の例に導入できます。
// 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 }
program.c で、関数 void z() は、ネーム・スペース Y のメンバーである関数 f() を呼び出します。 using ディレクティブをヘッダー・ファイルに入れると、program.c のソース・コードは、変更されないままです。
関連参照