Harold Serrano

View Original

C++ tip 2: Avoid using: "using namespace std"

During the initial phase of the game engine development I had the tendency of using:

using namespace std;

The using-directive makes methods from the std namespace available throughout your program. So for example, instead of writing the following:

std::vector<int> myNumber;

You can  write it as:

vector<int> myNumber;

This made it nice since I didn't have to specify std:: every time I wanted to use an operation from the library.

It turns out that employing the using namespace std in your application is not a good idea at all. Instead, you should reference the namespace  as shown below:

std::cout<<"hello there"<<std::endl;
std::string myName="harold";
std::vector<float> myFloat=1.3;

void calculate(std::vector<float> uV);

I know writing std:: is tedious, but you need to get over it and start referencing the namespace.   Namespaces organize larger program components, such as in a game engine. For example, Let's say that your application uses the namespace MyEngine. Your classes definition and declaration should look like shown below:  

//In header file
namespace MyEngine{
  class Point{
  //…
  void coordinates();
  }
}

//In implementation file
namespace MyEngine{
    void Point::coordinates(){
    //…
    }
}

//so if you want to call the class, reference its namespace
void main(){
    MyEngine::Point* myPoint=new Point();
    myPoint->coordinates();
}

Doing so will prevent any clashes with any other library that could be using the same names.