Есть ли в C ++ эквивалент Python "bigname импорта как b"? - PullRequest
6 голосов
/ 21 сентября 2009

Мне всегда нравились Python

import big_honkin_name as bhn

, поэтому вы можете просто использовать bhn.thing вместо значительно более многословного big_honkin_name.thing в вашем источнике.

Я виделдва типа использования пространства имен в коде C ++: либо

using namespace big_honkin_name; // includes fn().
int a = fn (27);

(что, я уверен, вещь плохая ), либо:

int a = big_honkin_name::fn (27);

Есть лиспособ получить функциональность Python в коде C ++, что-то вроде:

alias namespace big_honkin_name as bhn;
int a = bhn::fn (27);

Ответы [ 6 ]

13 голосов
/ 21 сентября 2009
namespace bhn = big_honkin_name;

Есть и другой способ использования пространств имен:

using big_honkin_name::fn;
int a = fn(27);
12 голосов
/ 21 сентября 2009

StackOverflow на помощь! Да, вы можете. Короче говоря:

namespace bhn = big_honkin_name;
6 голосов
/ 21 сентября 2009

Это легко ..

namespace bhn = big_honkin_name;
2 голосов
/ 21 сентября 2009

Вы можете использовать

using big_honkin_name::fn;

для импорта всех функций с именем fn из пространства имен big_honkin_name, чтобы вы могли затем написать

int a = fn(27);

Но это не позволяет вам сжать само имя. Чтобы сделать (что-то похожее, но не совсем), вы можете сделать следующее:

int big_honkin_object_name;

Позже вы можете использовать:

int& x(big_honkin_object_name);

И после этого относитесь к x так же, как и к big_honkin_object_name. Компилятор в большинстве случаев устраняет косвенную косвенность.

1 голос
/ 21 сентября 2009
using namespace big_honkin_name;

Не плохо. Не за что. При разумном использовании введение пространств имен в область действия улучшает четкость кода, удаляя ненужные помехи.

(Если только он не находится в заголовочном файле, в этом случае очень плохая практика.)

Но да, как уже отмечали другие, вы можете создать псевдоним пространства имен:

namespace big = big_honkin_name;
0 голосов
/ 16 января 2017

Хорошо сказано, C ++ эквивалент для импорта Python:

Python для C ++

import someLib as sl => namespace sl = someLib;

from someLib import func -> using someLib::func;

from someLib import * -> using namespace someLib;

обратите внимание, что перед этим необходимо выполнить #include<someLib> в C ++.

последний довольно известен!

#include<iostream>
using namespace std;
...