我有一个头文件。在这个标题中,我想使用一个类的地图。但是在我包含之后我得到了一个no matching function error
,因为我在项目中有一个copy()函数(真正的大项目)。我在这个网站上看到http://www.sgi.com/tech/stl/download.html该地图包含一个使用std :: copy,所以我猜它与之相撞。
我无法对复制功能进行任何更改,所以有没有办法在这个头文件中使用map? (没有其他地方)。有没有办法让我的副本功能不会发生冲突?
我在Windows 7上使用Visual Studio 2008。
答案 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来包含地图和复制功能的类。