我有这样一个标题:命名空间相同的名称,功能
double commonFunction(...)
{ /*...*/ }
namespace F2
{
double impactFactor(...)
{ /*...*/ }
double func(...)
{ /*...*/ }
double F2(...)
{ /*...*/ }
}
namespace FL
{
double impactFactor(...)
{ /*...*/ }
double func(...)
{ /*...*/ }
double FL(...)
{ /*...*/ }
}
而且我想从全局命名空间访问F2和F1功能。我尝试添加这头结束(或之后包括,无所谓):
using F2::F2;
using FL::FL;
我敢肯定,这个工程时,函数名从命名空间中的名称不同,但为什么会出现这种不工作,我该如何解决它?谢谢
PS:我不能把这些函数放在他们的命名空间之外,因为这会导致一个重新定义的符号(F2和FL,作为命名空间和函数)。
UPDATE:对于那些诅咒我的人,这就是我所做的。由于这是一个科学公式头文件,并且很难找到一个好的短名称空间名称,所以命名空间为F2和FL,函数本身为f2和fL。
通过使用适当的名称解决这个问题。 IME最好的命名空间名称是名词,最好的功能名称是动词。用英语,这仍然有冲突的余地,但他们少得多。 – sbi 2010-07-13 08:24:21
*使用*将名称带入作用域,因此如果在当前作用域中有该名称的任何内容,编译器将会发出抱怨。 所以,这意味着如果您在当前上下文中定义名称** F2 **的** int **,那么将您的名称空间名称更改为** F_INFINITE **将导致相同的错误。 – 2010-07-13 09:16:21
这与名称空间和函数名称是相同的名称无关,只是它们的声明恰好在相同的范围内。 – 2010-07-13 09:18:12