我有一个头文件。在这个头文件中,我想使用一个类的映射。但是在我包含之后,我得到了一个拷贝,因为我在项目(非常大的项目)中有一个no matching function error ()函数。我在这个网站的http://www.sgi.com/tech/stl/download.html上看到地图包含一个using std::copy,所以我猜它会与之冲突。
我不能对复制函数进行任何更改,所以有没有办法在这个头文件中使用map?(没有其他地方)。有没有办法让我的复制功能不会冲突?
我在Windows7上使用Visual Studio 2008。
发布于 2012-03-23 01:50:29
错误消息表明您的函数对翻译单元不可见,因此请确保包含标头。
另外,我怀疑<map>有没有像using std::copy这样的东西。你确定是这个吗?
在algobase.h (非标准C++)中,只有在定义了__STL_USE_NAMESPACES的情况下才会解析using指令。您应该在包含头部之前取消定义它:
#undef __STL_USE_NAMESPACES
#include "algobase.h"
#endif发布于 2012-03-23 01:57:35
您应该能够包装包含在名称空间中的映射。
namespace StopCollision
{ #include <map> }然后,地图复制功能将通过StopCollision::std::copy可用。这是非常粗糙的,但可以解决您的问题。
发布于 2012-03-23 01:56:24
据我所知,map stl类没有复制功能。这可能是一个包含问题,您可以尝试使用包含映射和复制函数的类的forward reference。
https://stackoverflow.com/questions/9827645
复制相似问题