我必须在同一个foo()
和同一个文件中定义两个函数,比如bar()
和namespace
。对于第一个foo()
的定义,我想使用namespace other
的所有符号,但不希望namespace other
中的符号自动在我的范围内其他功能,bar()
。这可能吗?怎么样?
(注意:我不想知道替代方案"解决方案"要么避免这种缓解问题,例如namespace o=other
等。
答案 0 :(得分:4)
是的,有可能:
void foo()
{
using namespace abc;
....
}
或
void foo()
{
using abc::x;
using abc::y;
using abc::z;
....
}
答案 1 :(得分:4)
#include <iostream>
void quux() { std::cout << "root\n"; }
namespace other {
void quux(int x = 0) { std::cout << "other\n"; }
}
namespace taxes {
void foo() {
using namespace other;
quux(3);
};
void bar() {
quux();
}
}
int main() {
taxes::foo();
taxes::bar();
}
请注意,quux
中的bar
如果可以看到other::quux
,则不明确,但不能。{/ p>
另一方面,不允许您访问函数namespace other
的'head'中的foo
(参数等),但这是一个罕见的要求。可能存在涉及内联namespace
等的解决方案,但可能不值得混淆。