我正在尝试将无序地图声明到我的程序中,我将把它们映射到另一个文件中的标记。
我需要一个方法来返回在Token.h中找到的Token类型(这是一个enum class
)
令我困惑的是,因为我想将映射的标记从unordered_map
返回到enum class
,所以该方法的返回类型应该是什么?此外,它说明
error: 'unordered_map' does not name a type
我对C ++很陌生,在这种情况下我仍然觉得我应该如何声明方法。我已经读过无序映射应该在INSIDE方法中声明,但是因为我想要地图返回的值,它应该是返回类型?
我试过这个
Token Lexer::getTokenType()
{
unordered_map<string,Token> tokenType;
}
这会输出以下错误:
#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()
{
}
仍然产生相同的
错误:
我知道这些听起来很愚蠢,但你能介意给我解释一下吗?正如在我所遵循的教程中,很多是,是的,在方法中调用,但即使这样也不起作用
答案 0 :(得分:8)
您需要加入<unordered_map>
。
如果您还没有这样做,还需要启用C ++ 11支持:对于GCC,请确保编译器参数包含-std=c++11
(或c++0x
如果您是使用旧的编译器。)