【发布时间】:2021-12-23 07:36:44
【问题描述】:
考虑代码
namespace A
{
}
namespace B
{
namespace ::A
{
void func();
}
}
这是无效的 C++ 语法 - 但我正在寻找可行的方法。我需要声明 ::A::func(),但在命名空间 B 中(我不想要 B::A::func,而是 A::func)。
(如果你问为什么?那是因为 func() 最终将由一个宏声明,该宏也在命名空间 B 中声明一些东西。)
有可能吗?
【问题讨论】:
-
在命名空间 A 中声明
func之前关闭命名空间 B,然后关闭命名空间 A,然后重新打开命名空间 B。 -
我的项目有这个需求。我们通过使用两个宏来解决它,一个用于在另一个命名空间中引用,另一个用于在正确的命名空间中声明该事物。 (我讨厌宏。)
-
@RichardCritten 这就是为什么我通常会手动编写代码。但这应该是宏观的通用解决方案。例如。它可能是 A::B::C - 我不知道有多少命名空间。我想那是不可能的。
-
@Eljay 目前我也做了同样的事情,只是想知道是否有更好的解决方案。
标签: c++ syntax namespaces syntax-error argument-dependent-lookup