是否有可能有一个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"
...
我该如何预防&#34; using std::vector
&#34;在这里可见?
答案 0 :(得分:4)
因为您标记了c ++ 11:
#include<vector>
class foo
{
template<typename T>
using vector = std::vector<T>;
};
答案 1 :(得分:0)
至于您的第一个要求,您可以使用命名空间,以便using namespace
的范围仅限于一个类。
#include<vector>
namespace FooClasses
{
using namespace std; //The scope of this statement will NOT go outside this namespace.
class foo
{
vector<int> vecIntVector;
};
}// namespace FooClasses
对于第二种情况,请明智地使用#define
和#undef
。