造成这个问题的原因是:
'*****'在一个以上的命名空间内被定义,使得有多个'*****'同时满足,系统不知具体使用哪一个;
如boost和std中都定义了function函数类型模板,如果在程序开头,同时使用using namespace std;和
using namespace boost;就会出现Reference to 'function' is ambiguous,的错误提示。
解决此类问题的办法是:尽量不要使用 using namespace xx;,
而是要用包含命名空间的变量类型,类似:using std::function; 或 std::function<void*(void*)>等
本文探讨了在C++中,当同一标识符在多个命名空间中被定义时导致的引用模糊问题。通过实例说明了boost和std命名空间中function类型的冲突,并提供了解决方案,建议避免使用using namespace指令,转而明确指定命名空间。

1050

被折叠的 条评论
为什么被折叠?



