我自己的copy()函数与std :: copy()冲突

时间:2012-03-22 17:42:34

标签: c++

我有一个头文件。在这个标题中,我想使用一个类的地图。但是在我包含之后我得到了一个no matching function error,因为我在项目中有一个copy()函数(真正的大项目)。我在这个网站上看到http://www.sgi.com/tech/stl/download.html该地图包含一个使用std :: copy,所以我猜它与之相撞。

我无法对复制功能进行任何更改,所以有没有办法在这个头文件中使用map? (没有其他地方)。有没有办法让我的副本功能不会发生冲突?

我在Windows 7上使用Visual Studio 2008。

3 个答案:

答案 0 :(得分:1)

错误消息表明您的功能对翻译单元不可见,因此请确保包含标题。

此外,我怀疑<map>using std::copy之类的内容。你确定这个吗?

algobase.h(非标准C ++)中,仅在定义using时才解析__STL_USE_NAMESPACES指令。在包含标题之前,您应该取消定义它:

#undef __STL_USE_NAMESPACES
#include "algobase.h"
#endif

答案 1 :(得分:1)

你应该能够将地图包括在名称空间中,即


    namespace StopCollision
    { #include <map> }

然后地图复制功能将通过StopCollision::std::copy提供。这非常粗糙,但可以解决您的问题。

答案 2 :(得分:0)

据我所知,map stl类没有复制功能。这可能是一个包含问题,您可以尝试使用forward reference来包含地图和复制功能的类。