Solving Global Namespace Clashes

The C++ language provides a single global namespace. This can cause problems with global name clashes. For instance, consider these two C++ header files:

  // file1.hfloat f ( float, int ) ;class sample { ... } ;// file2.hclass sample { ... } ;

With these definitions, it is impossible to use both header files in a single program; the sample classes will clash.

A namespace is a declarative region that attaches an additional identifier to any names declared inside it. The additional identifier thus avoids the possibility that a name will conflict with names declared elsewhere in the program. It is possible to use the same name in separate namespaces without conflict even if the names appear in the same translation unit. As long as they appear in separate namespaces, each name will be unique because of the addition of the namespace identifier. For example:

 // file1.hnamespace file1{float f ( float, int ) ;class sample { .. } ;}// file2.hnamespace file2{class sample { ... } ;}

Now, the class names will not clash because they become file1::sample and file2::sample, respectively.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: