gpt4 book ai didi

c++ - 命名空间与函数同名

转载 作者:太空狗 更新时间:2023-10-29 20:18:44 24 4
gpt4 key购买 nike

我在标题中有这个:

double commonFunction( ... )
{ /*...*/ }
namespace F2
{
double impactFactor( ... )
{ /*...*/ }
double func( ... )
{ /*...*/ }
double F2( ... )
{ /*...*/ }
}
namespace FL
{
double impactFactor( ... )
{ /*...*/ }
double func( ... )
{ /*...*/ }
double FL( ... )
{ /*...*/ }
}

我想从全局命名空间访问 F2 和 FL 函数。我尝试将其添加到 header 的末尾(或在包含之后,没关系):

using F2::F2;
using FL::FL;

我确信当函数名称与命名空间名称不同时这会起作用,但为什么它不起作用,我该如何解决?谢谢

PS:我不能将函数放在它们的命名空间之外,因为那样会导致重新定义符号(F2 和 FL,既是命名空间又是函数)。

更新:对于那些诅咒我的人,这是我所做的。由于这是一个科学公式标题,而且很难找到一个好的简短命名空间名称,因此我将命名空间命名为 F2 和 FL,并将函数本身命名为 f2 和 fL。

最佳答案

因为,using 将每个具有给定名称的声明带入作用域,所以如果您已经有两个或多个具有一个名称的声明(在本例中为 namespace f1),它会提示。

与命名空间和函数的名称相同无关。即使这样也会产生同样的错误:

namespace foo
{
void not_foo(){};
}
namespace not_foo
{
void foo(){}
}
using not_foo::foo;

关于c++ - 命名空间与函数同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235228/

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