C ++编译错误 - “命名空间std中没有命名为'function'的类型”

时间:2012-11-03 20:38:33

标签: c++

我正在为我的C ++编程类工作,它涉及实现哈希映射。我的讲师给了我们一个头文件,我们需要使用我们的哈希映射类。提供的头文件包含以下行:

typedef std::function<unsigned int(const std::string&)> HashFunction;

根据我对(C ++)的有限理解,这会将HashFunction类型定义为std :: function。但是,当我编译代码时,我得到错误:

./HashMap.h:46:15: error: no type named 'function' in namespace 'std'
        typedef std::function<unsigned int(const std::string&)> HashFunction;
                ~~~~~^
./HashMap.h:46:23: error: expected member name or ';' after declaration specifiers
        typedef std::function<unsigned int(const std::string&)> HashFunction;
        ~~~~~~~~~~~~~~~~~~~~~^

HashMap.h文件有

#include <functional>

在顶部,如果重要的话。

有谁知道我为什么会收到这些错误?

2 个答案:

答案 0 :(得分:6)

您需要一个具有(至少部分)C ++ 11支持的编译器。您使用的是哪种编译器?

答案 1 :(得分:0)

只需添加:

CONFIG +=c++11

到.pro文件:)