Reputation: 882028
I've always liked Python's
import big_honkin_name as bhn
so you can then just use bhn.thing
rather than the considerably more verbose big_honkin_name.thing
in your source.
I've seen two type of namespace use in C++ code, either:
using namespace big_honkin_name; // includes fn().
int a = fn (27);
(which I'm assured is a bad thing) or:
int a = big_honkin_name::fn (27);
Is there a way to get Python functionality in C++ code, something like:
alias namespace big_honkin_name as bhn;
int a = bhn::fn (27);
Upvotes: 7
Views: 868
Reputation: 62
Nicely put, C++ equivalent for Python imports are:
import someLib as sl
=> namespace sl = someLib;
from someLib import func
-> using someLib::func;
from someLib import *
-> using namespace someLib;
note that you must do the #include<someLib>
in C++ before these.
#include<iostream>
using namespace std;
Upvotes: 2
Reputation: 6651
using namespace big_honkin_name;
Is not a bad thing. Not at all. Used judiciously, bringing namespaces into scope improves clarity of code by removing unnecessary clutter.
(Unless it's in a header file in which case it's very poor practice.)
But yes, as others have pointed out you can create a namespace alias:
namespace big = big_honkin_name;
Upvotes: 1
Reputation: 67829
namespace bhn = big_honkin_name;
There's another way to use namespaces too:
using big_honkin_name::fn;
int a = fn(27);
Upvotes: 13
Reputation: 51246
You can use
using big_honkin_name::fn;
to import all functions named fn
from the namespace big_honkin_name
, so that you can then write
int a = fn(27);
But that doesn't let you shrink down the name itself. To do (something similar to but not exactly) that, you could do as follows:
int big_honkin_object_name;
You can later use:
int& x(big_honkin_object_name);
And thereafter treat x
the same as you would big_honkin_object_name
. The compiler will in most cases eliminate the implied indirection.
Upvotes: 2
Reputation: 75429
StackOverflow to the rescue! Yes you can. In short:
namespace bhn = big_honkin_name;
Upvotes: 12