错误:C2888: “std::hash”: 不能在命名空间“tr1”内定义符号

freddychu 2012-01-03 11:11:28
我在编译meshlab代码时出现这个错误:

meshlabsrc_allinc_v131\meshlab\src\meshlabplugins\filter_csg\intercept.h:27: 错误:C2888: “std::hash<vcg::Point3i>”: 不能在命名空间“tr1”内定义符号

错误代码如下,实在不知道怎么修改如下代码,哪位帮忙下?

namespace std {
namespace tr1 {
template <>
struct hash<vcg::Point3i>
: public std::unary_function<vcg::Point3i, std::size_t>
{
std::size_t operator()(const vcg::Point3i &x) const
{
std::tr1::hash<int> h;
return ((x[0]) * 131 + h(x[1])) * 131 + h(x[2]);
}
};
}
}
...全文
546 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
freddychu 2012-01-03
  • 打赏
  • 举报
回复
这段代码牵涉到Meshlab一堆代码,改类型,会有一堆错误。
我注释掉这段代码也不行,真头疼。
taodm 2012-01-03
  • 打赏
  • 举报
回复
就用用std::map吧。hash,太折腾了,还要引入一堆你不会的语法。
freddychu 2012-01-03
  • 打赏
  • 举报
回复
谢谢。
你指vcg::Point3i是否可以正确解析和找到吧?可以找到定义的。
这段代码的下面这句太没看懂:
template <>
struct hash<vcg::Point3i>
: public std::unary_function<vcg::Point3i, std::size_t>
qscool1987 2012-01-03
  • 打赏
  • 举报
回复
vcg::Point3i
这个你引进了没
freddychu 2012-01-03
  • 打赏
  • 举报
回复
算了,我还是注释了大量代码,勉强编译通过,但估计功能用不了。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧