Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there an C++ equivalent to Python's "import bigname as b"?

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);
like image 254
paxdiablo Avatar asked Sep 21 '09 04:09

paxdiablo


5 Answers

namespace bhn = big_honkin_name;

There's another way to use namespaces too:

using big_honkin_name::fn;
int a = fn(27);
like image 68
rlbond Avatar answered Nov 15 '22 09:11

rlbond


StackOverflow to the rescue! Yes you can. In short:

namespace bhn = big_honkin_name;
like image 45
Chris Lutz Avatar answered Nov 15 '22 08:11

Chris Lutz


It is easy..

namespace bhn = big_honkin_name;
like image 27
yoco Avatar answered Nov 15 '22 08:11

yoco


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.

like image 20
j_random_hacker Avatar answered Nov 15 '22 07:11

j_random_hacker


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;
like image 40
MattyT Avatar answered Nov 15 '22 09:11

MattyT