paxdiablo
paxdiablo

Reputation: 882028

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);

Upvotes: 7

Views: 868

Answers (6)

Vin
Vin

Reputation: 62

Nicely put, C++ equivalent for Python imports are:

Python to C++

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.

the last one is quite famous!

#include<iostream>
using namespace std;

Upvotes: 2

MattyT
MattyT

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

rlbond
rlbond

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

j_random_hacker
j_random_hacker

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

yoco
yoco

Reputation: 1424

It is easy..

namespace bhn = big_honkin_name;

Upvotes: 6

Chris Lutz
Chris Lutz

Reputation: 75429

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

namespace bhn = big_honkin_name;

Upvotes: 12

Related Questions