6

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

6 回答 6

13
namespace bhn = big_honkin_name;

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

using big_honkin_name::fn;
int a = fn(27);
于 2009-09-21T04:28:42.653 回答
12

StackOverflow 来救援!是的你可以。简而言之:

namespace bhn = big_honkin_name;
于 2009-09-21T04:24:32.617 回答
6

这很容易..

namespace bhn = big_honkin_name;
于 2009-09-21T04:25:49.960 回答
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);

x然后像你一样对待big_honkin_object_name。在大多数情况下,编译器会消除隐含的间接。

于 2009-09-21T04:26:27.093 回答
1
using namespace big_honkin_name;

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

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

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

namespace big = big_honkin_name;
于 2009-09-21T13:53:32.067 回答
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;

请注意,您必须#include<someLib>在这些之前执行 C++ 中的操作。

最后一个很有名!

#include<iostream>
using namespace std;
于 2017-01-16T15:46:11.737 回答