Alex
Alex

Reputation: 149

Use of "using namespace" when declaring that namespace

Suppose I have the following files:

// SomeClass.h
namespace Example
{
    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

// SomeClass.cpp
Example::SomeClass Example::SomeClass::SomeFunction()
{
    ...
}

Would there be any consequences to add "using namespace Example;" before the namespace in SomeClass.h to eliminate the need of adding the "Example::" scope operator to things in the Someclass.cpp file? Even if there are no conesequences, would this be considered bad coding practice?

The change would be as follows:

// SomeClass.h
using namespace Example;

namespace Example
{
    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

// SomeClass.cpp
SomeClass SomeClass::SomeFunction()
{
    ...
}

Upvotes: 0

Views: 68

Answers (1)

Galik
Galik

Reputation: 48605

No, please don't put using namespace ...; in the global area. You can just do this:

SomeClass.h

// using namespace Example; // never here please

namespace Example
{
    using namespace OtherExample; // this is okay (not global)

    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

SomeClass.cpp

namespace Example // same as in .h
{
    using namespace OtherExample; // this is okay (not global)

    SomeClass SomeClass::SomeFunction()
    {
        ...
    }
}

And I would also suggest with potentially huge namespaces like std:: to never use using namespace std; even within your own namespaces because they simply drag in too many common symbol names.

Upvotes: 1

Related Questions