Skip to content
Related Articles

Related Articles

Improve Article

Namespace in C++ | Set 3 (Accessing, creating header, nesting and aliasing)

  • Difficulty Level : Easy
  • Last Updated : 29 May, 2017

Namespace in C++ | Set 1 (Introduction)
Namespace in C++ | Set 2 (Extending namespace and Unnamed namespace)

Different ways to access namespace

In C++, there are two ways of accessing namespace variables and functions.
  1. Normal way




    // C++ program to demonstrate accessing of variables
    // in normal way, i.e., using "::"
    #include <iostream>
    using namespace std;
      
    namespace geek
    {
        int rel = 300; 
    }
      
    int main()
    {
        // variable ‘rel’ accessed 
        // using scope resolution operator
        cout << geek::rel << "\n"// prints 300
      
        return 0;
    }

    Output :

    300
    
  2. “using” directive




    // C++ program to demonstrate accessing of variables
    // in normal way, i.e., using "using" directive
    #include <iostream>
    using namespace std;
      
    namespace geek
    {
        int rel = 300; 
    }
      
    // use of ‘using’ directive
    using namespace geek;
      
    int main()
    {
       // variable ‘rel’ accessed 
       // without using scope resolution variable
       cout << rel << "\n";        //prints 300
        
       return 0;
    }

    Output:

    300
    

Using namespace in header files

We can create namespace in one file and access contents using another program. This is done in the following manner.



  • We need to create two files. One containing the namespace and all the data members and member functions we want to use later.
  • And the other program can directly call the first program to use all the data members and member functions in it.

File 1




// file1.h 
namespace foo
{
    int value() 
    
       return 5;    
    }
}

File 2




// file2.cpp - Not to be executed online
#include <iostream>
#include “file1.h” // Including file1
using namespace std;
  
int main () 
{
    cout << foo::value();
    return 0;
}

Here we can see that the namespace is created in file1.h and the value() of that namespace is getting called in file2.cpp.

Nested Namespaces

In C++, namespaces can also be nested i.e., one namespace inside another. The resolution of namespace variables is hierarchical.




// C++ program to demonstrate nesting of namespaces
#include <iostream>
using namespace std;
  
// Nested namespace
namespace out
{
  int val = 5; 
  namespace in
  {
      int val2 = val;    
  }
}
  
// Driver code
int main()
{
  cout << out::in::val2;   // prints 5
  return 0;
}

OUTPUT :

5

Namespace Aliasing

In C++, you can use an alias name for your namespace name, for ease of use. Existing namespaces can be aliased with new names, with the following syntax:
namespace new_name = current_name;




#include <iostream>
  
namespace name1 
{
    namespace name2 
    {
         namespace name3 
         {
             int var = 42;
         }
    }
}
  
// Aliasing 
namespace alias = name1::name2::name3;
   
int main()
{
    std::cout << alias::var << '\n';
}

Output :

42

This article is contributed by Abhinav Tiwari .If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.



My Personal Notes arrow_drop_up
Recommended Articles
Page :