C++无序映射错误

Dod*_*bro 0 c++ types unordered-map

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

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

令我困惑的是,因为我想将映射的标记从中返回unordered_mapenum class,所以该方法的返回类型应该是什么?而且,它说明了这一点

error: 'unordered_map' does not name a type

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


我试过这个

测试1

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

}
Run Code Online (Sandbox Code Playgroud)

这会输出以下错误: 错误

测试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
{

}
Run Code Online (Sandbox Code Playgroud)

要么

unordered_map<string, Token>::Lexer::getTokenType()
{
}
Run Code Online (Sandbox Code Playgroud)

仍然产生了同样的结果

它的错误: 错误

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


Mik*_*our 8

你需要包括<unordered_map>.

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