MKo*_*MKo 22 c++ namespaces using
考虑以下C++代码.
namespace A {
void f() { // first function
}
void f(int) { // second function
}
}
...
using A::f; // introduces both functions
Run Code Online (Sandbox Code Playgroud)
有没有办法只引入一个功能?
Eri*_*c Z 18
该行为在标准中有明确定义.
C++03 7.3.3 The using declaration:
"...... 如果名称是重载成员函数的名称,那么所有命名的函数都应该是可访问的."
using关键字将把所有名称带入当前范围.所以使用这个当前的代码是不可能的.
但是,您可以将名称部分引入文件,如下所示:
namespace A {
void f(); // declaration
}
using A::f;
// now only `A::f()` is visible in the subsequent code
// technically `A::f(int)` is not yet visible (thus unusable)
// introduce the other function later on
namespace A {
void f(int);
}
Run Code Online (Sandbox Code Playgroud)
演示.
编辑:更好的方法是放入A::f(int)嵌套namesapce并引入别名(为了方便使用).
namespace A {
void f();
namespace Internal {
void f(int);
}
}
using A::f;
namespace A_ = A::Internal;
Run Code Online (Sandbox Code Playgroud)
现在,其他功能也可用作A_::f(int).
| 归档时间: |
|
| 查看次数: |
11232 次 |
| 最近记录: |