gpt4 book ai didi

C++ 使用来自其他命名空间的符号而不使它们可以从外部访问

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:02 26 4
gpt4 key购买 nike

有没有类似于using namespace的构造这不会使导入的符号在命名空间的主体(或多个主体)之外可见?

在此示例中,whatever 中的每个符号和 other_namespace可通过 Foo::<name_of_symbol> 访问还有……我想要一种方法来防止这种情况发生。

namespace Foo {
using namespace whatever;
using namespace other_namespace;
// some definitions
}

作为一个完整的例子,这个程序是有效的。如果替代 using namespace具有预期的语义存在并被使用,它不会是。

namespace a {
int func(int x) {
return 10;
}
}

namespace b {
using namespace a;
}

namespace c {
int do_thing(int x) {
return b::func(57);
}
}

最佳答案

您可以在未命名的命名空间内使用别名。

namespace a_long_namespace_name {
void someFunc() {};
}

namespace b {
namespace { // an unnamed namespace
namespace a = a_long_namespace_name; // create a short alias
}

void someOtherFunc() {
a::someFunc();
}
}

b::a::someFunc(); // compiler error

您仍然需要编写命名空间来调用函数,但这会使调用更短。

关于C++ 使用来自其他命名空间的符号而不使它们可以从外部访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45749445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com