【发布时间】:2014-12-05 09:45:04
【问题描述】:
是否有可能有一个using 指令,其范围仅限于单个类?
请注意,我要“使用”的内容不包含在当前类的父类中。
为简单起见,假设以下示例:
#include<vector>
class foo
{
using std::vector; //Error, a class-qualified name is required
}
另一个有趣的事情是,如果包含using 指令,是否包含标头:
MyClassFoo.h:
#include<vector>
using std::vector; //OK
class foo
{
}
在
NewHeader.h
#include "MyClassFoo.h"
...
如何防止“using std::vector”在此处显示?
【问题讨论】:
-
是否有可能为“std::vector
”创建一个模板类型别名,然后称为“vector”?这样,它的作用与我希望在类中使用 std::vector 所做的相同 -
是的,
using声明可以在创建类型别名时进行模板化,并且可以调用该类型别名vector,因为它位于std::vector的另一个范围内。 -
我认为值得指出的是,这不是using 指令,而是using 声明。使用指令引入命名空间。
-
谢谢,我把“指令”改成了“声明”
-
使用wrapper namespace接近你想要的。
标签: c++ c++11 using using-directives