与第三方头文件有关的C ++ Builder歧义错误

时间:2013-02-05 21:05:23

标签: c++ c++builder

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

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

如果有人知道某种方式,或者有更好的方法,我就全都听见了。

背景

如果我需要非全局命名空间,那就不会有问题了,因为我可以使用“使用”这个名称空间...好奇是否有一种方法可以使用全局名称空间“使用”参考

2 个答案:

答案 0 :(得分:1)

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

using namespace x;
using namespace y;

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

选项是使用x ::或y ::前置函数或者命名空间:

int test( void )
{
   using namespace x;
}


int test1( void )
{
   using namespace y;
}

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

更新: 指定“全局”命名空间的唯一方法是使用::

预先添加函数调用

答案 1 :(得分:1)

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