gpt4 book ai didi

c++ - 从VC9迁移到VC10报错C2888

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:39 25 4
gpt4 key购买 nike

我正在尝试在 MSVC++ 10 上编译在 MSVC++ 9 中运行良好的解决方案和项目,但我遇到了问题,主要是收到以下消息:

错误 C2888: “std::hash”:无法在命名空间“tr1”中定义符号

关于以下代码:

namespace std {
namespace tr1 {

template <>
struct hash< Rubedo::eChannelFamily >
{
std::size_t operator()( const Rubedo::eChannelFamily& Key ) const
{
return ( int ) Key;
}
};
}}

如果我能做到以下其中一项,我会非常高兴:

  • 修改代码以修复错误并干净地编译;
  • 强制编译器的行为类似于 MSVC++ 9.0。

我该怎么做?非常感谢您。

最佳答案

hash 在 VS2010 中位于命名空间 std 中,因为它是 C++0x 标准库的一部分,而不是 std::tr1。只需删除 tr1 部分,编译器应该没问题。

template<> class std::hash< Rubedo::eChannelFamily >>
: public std::unary_function<const Rubedo::eChannelFamily, size_t>
{
public:
size_t operator()(const Rubedo::eChannelFamily& ref) const {
return ( int ) ref;
}
};

这是对我自己的类型的哈希的一个相当微不足道的修改,它编译成功。

关于c++ - 从VC9迁移到VC10报错C2888,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com