0

我正在开发一个使用许多第三方库的大型项目。由于这个事实,我遇到了一些模棱两可的错误。一些函数在全局名称空间中定义,也在不同的名称空间中定义。

我知道您可以指定“使用”来说明要使用的命名空间,但是我不知道如何为文件指定它,而不是在每个错误前面加上“::”。

如果有人知道方法,或者有更好的方法,我会全神贯注。

背景:

如果我需要非全局命名空间,那将不是问题,因为我可以将“使用”与该命名空间一起使用......好奇是否有一种方法可以对全局命名空间引用进行“使用”

4

2 回答 2

1

如果在两个不同的命名空间下有两个同名且参数化的函数,则不能:

using namespace x;
using namespace y;

因为编译时会出现歧义错误。

选项是在函数前面加上 x:: 或 y:: 或限定命名空间:

int test( void )
{
   using namespace x;
}


int test1( void )
{
   using namespace y;
}

当然,这仅在您不在单个函数中使用两个命名空间时才有效。

更新:指定“全局”命名空间的唯一方法是在函数调用前加上 ::

于 2013-02-05T22:12:18.447 回答
1

在某些情况下,它有助于重新排列标题,因此使用全局命名空间的标题位于前面 -

于 2013-02-08T08:32:03.737 回答