none
错误:C2888: “std::hash<vcg::Point3i>”: 不能在命名空间“tr1”内定义符号 RRS feed

  • 问题

  • 我在编译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]);
                }
            };
        }
    }

    2012年1月3日 2:42

答案

  • struct hash 是在哪个命名空间声明的? 你不能在其他的命名空间中定义它。
    麻烦把正确答案设为解答。
    • 已标记为答案 Rob Pan 2012年1月11日 8:52
    2012年1月3日 8:15
    版主
  • 你好,

     

    正如SplendourG所说,hash已经在其他名字控件声明,如果您需要引用它,您需要使用using namespace XXX 来调用此名字空间。


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 Rob Pan 2012年1月11日 8:52
    2012年1月5日 8:41

全部回复

  • struct hash 是在哪个命名空间声明的? 你不能在其他的命名空间中定义它。
    麻烦把正确答案设为解答。
    • 已标记为答案 Rob Pan 2012年1月11日 8:52
    2012年1月3日 8:15
    版主
  • 你好,

     

    正如SplendourG所说,hash已经在其他名字控件声明,如果您需要引用它,您需要使用using namespace XXX 来调用此名字空间。


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 Rob Pan 2012年1月11日 8:52
    2012年1月5日 8:41