C ++ unordered_map错误

时间:2014-04-24 11:54:04

标签: c++ types unordered-map

我正在尝试将无序地图声明到我的程序中,我将把它们映射到另一个文件中的标记。

我需要一个方法来返回在Token.h中找到的Token类型(这是一个enum class

令我困惑的是,因为我想将映射的标记从unordered_map返回到enum class,所以该方法的返回类型应该是什么?此外,它说明

error: 'unordered_map' does not name a type

我对C ++很陌生,在这种情况下我仍然觉得我应该如何声明方法。我已经读过无序映射应该在INSIDE方法中声明,但是因为我想要地图返回的值,它应该是返回类型?


我试过这个

测试1

Token Lexer::getTokenType()
{
   unordered_map<string,Token> tokenType;

}

这会输出以下错误: Errors

测试2

我试过这个

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <sstream>
#include <wctype.h>
#include <map>


#include "lexer.h"


using namespace std;

long Row, Col, Offset;

unordered_map<string, Token> ProtectedWords
{

}

OR

unordered_map<string, Token>::Lexer::getTokenType()
{
}

仍然产生相同的

错误:Error

我知道这些听起来很愚蠢,但你能介意给我解释一下吗?正如在我所遵循的教程中,很多是,是的,在方法中调用,但即使这样也不起作用


1 个答案:

答案 0 :(得分:8)

您需要加入<unordered_map>

如果您还没有这样做,还需要启用C ++ 11支持:对于GCC,请确保编译器参数包含-std=c++11(或c++0x如果您是使用旧的编译器。)