是否有一个C ++相当于Python的“导入bigname为b”?

时间:2009-09-21 04:18:51

标签: c++ python namespaces alias

我一直很喜欢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);

有没有办法在C ++代码中获得Python功能,例如:

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

6 个答案:

答案 0 :(得分:13)

namespace bhn = big_honkin_name;

还有另一种使用命名空间的方法:

using big_honkin_name::fn;
int a = fn(27);

答案 1 :(得分:12)

StackOverflow to the rescue!是的,你可以。简而言之:

namespace bhn = big_honkin_name;

答案 2 :(得分:6)

很容易..

namespace bhn = big_honkin_name;

答案 3 :(得分:2)

您可以使用

using big_honkin_name::fn;

从命名空间fn导入名为big_honkin_name的所有函数,以便您可以编写

int a = fn(27);

但这不会让你缩小名称本身。要做(类似但不完全相同),你可以这样做:

int big_honkin_object_name;

您稍后可以使用:

int& x(big_honkin_object_name);

然后将xbig_honkin_object_name一样对待{{1}}。在大多数情况下,编译器将消除隐含的间接。

答案 4 :(得分:1)

using namespace big_honkin_name;

不是坏事。一点也不。明智地使用,通过消除不必要的混乱,将命名空间纳入范围提高代码的清晰度。

(除非它在头文件中,在这种情况下它是非常糟糕的做法。)

但是,正如其他人指出的那样,您可以创建名称空间别名:

namespace big = big_honkin_name;

答案 5 :(得分:0)

很好地说,Python导入的C ++等价物是:

Python到C ++

import someLib as sl => namespace sl = someLib;

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

from someLib import * - > using namespace someLib;

请注意,您必须先在C ++中使用#include<someLib>

最后一个很有名!

#include<iostream>
using namespace std;